내가 만든 하나 이상의 API를 사용하는 웹 서버를 정의해야 합니다. Python용 Cloud Endpoints 프레임워크는 표준 웹 서버 게이트웨이 인터페이스 (WSGI)를 구현하여 API에 대한 요청을 코드의 메서드로 라우팅합니다.
App Engine에서 실행되는 모든 애플리케이션과 마찬가지로 App Engine 앱의 설정을 구성하는 app.yaml이라는 파일을 만들어야 합니다. 웹 서버를 정의하려면 app.yaml 파일을 변경합니다.
웹 서버를 정의하려면 다음 안내를 따르세요.
Python 모듈(예:
main.py)을 만들고 최상위 수준에endpoints.api_server객체를 만듭니다.api = endpoints.api_server([EchoApi])코드는 API 요청을EchoAPI클래스의 메서드로 라우팅하는 WSGI 애플리케이션을 만듭니다.remote.Service객체(API를 만들 때 정의함)의 목록을endpoints.api_server에 제공할 수 있습니다. 여러 클래스에서 구현되는 API가 있는 경우remote.Service객체는 여러 클래스로 구현된 API 만들기에서 설명하는 클래스 컬렉션입니다.endpoints.api_server객체를 위한 별도의 모듈을 만들지 여부는 단일 API를 만들었는지 여러 API를 만들었는지에 따라 결정됩니다.여러 파일에 정의된 여러 API를 만든 경우(여러
remote.Service서브클래스 사용) 모든 클래스 파일을 가져올 수 있도록endpoints.api_server객체를 위한 별도의 모듈을 만드는 것이 좋습니다.API를 하나만 만든 경우에는 다른 클래스를 가져올 필요가 없으므로 필요한
endpoints.api_server코드를 API를 정의하는 모듈에 추가하면 됩니다.
app.yaml파일에서 방금 만든 웹 서버를 다음과 같이 Cloud Endpoints 위치에 매핑합니다.여기서
main은endpoints.api_server객체를 정의한 Python 모듈입니다.
다른 경로에서 API 제공
선택사항: 다른 경로(예: /api/)에서 API를 제공하려면 다음 안내를 따르세요.
데코레이터를 수정합니다.
@endpoints.api(name='echo', version='v1', base_path='/api/')app.yaml파일에서handlers섹션을 변경합니다.handlers: - url: /api/.* script: main.api
Python용 Endpoints 프레임워크의 로깅
Python용 Endpoints Frameworks는 표준 Python 로깅 모듈을 사용하여 애플리케이션의 상태 및 요청 수명 주기에 대한 정보를 로깅합니다. App Engine 로그에 대한 자세한 내용 및 확인 방법은 App Engine 문서의 애플리케이션 로그 읽기 및 쓰기를 참조하세요.
Python 로깅 모듈은 사전 정의된 로그 수준을 제공합니다. 로그 수준을 심각도 순으로 나열하면 다음과 같습니다.
| 로그 수준 | 설명 |
|---|---|
DEBUG |
상세한 로그를 제공합니다. 일반적으로 문제해결이 필요한 경우에만 이 수준을 설정합니다. |
INFO |
Endpoints Frameworks의 기본 로그 수준입니다. 애플리케이션의 진행 상황을 개략적으로 추적할 수 있습니다. |
WARNING |
예상치 못한 문제의 발생을 경고하지만 애플리케이션은 복구되어 계속 정상적으로 실행됩니다. |
ERROR |
일부 기능 손실을 야기하는 문제의 발생을 경고하지만 애플리케이션은 계속 실행됩니다. |
CRITICAL |
애플리케이션 중지를 야기하는 심각한 오류나 이벤트의 발생을 경고합니다. |
로거는 점으로 구분된 계층 구조로 존재합니다. 예를 들어 endpoints.api_config 로거는 endpoints 로거의 하위 항목입니다. 이러한 계층 구조를 통해 생성하거나 차단할 로그를 정밀하게 제어할 수 있습니다. 일반적으로는 Endpoints 프레임워크의 루트 로거 2개(endpoints 및 endpoints_management)만 변경합니다.
Endpoints 프레임워크에 DEBUG 로깅 사용 설정
로그 리더의 과부하를 방지하기 위해 Endpoints 프레임워크는 로거가 INFO 로그 수준 이상의 로그 항목만 기록하���록 설정합니다. Endpoints 프레임워크를 모듈로 가져온 후에는 다음과 같이 언제든지 로그 수준을 변경할 수 있습니다.
import logging
logging.getLogger('endpoints').setLevel(logging.DEBUG)
logging.getLogger('endpoints_management').setLevel(logging.DEBUG)
setLevel 메서드는 로거의 최소 로그 수준을 설정합니다.