이 페이지에는 Cloud Endpoints 프레임워크의 알려진 문제가 포함되어 있습니다.
자바 및 Python
이 섹션은 자바 및 Python 버전의 Endpoints Framework 모두에 영향을 미치는 알려진 문제를 설명합니다.
최대 요청 제한 시간
Endpoints 프레임워크 버전 2를 사용하는 API의 최대 요청 제한 시간은 60초입니다.
Endpoints 프레임워크 마이그레이션
API를 Endpoints 프레임워크 버전 2로 마이그레이션하는 경우 새 App Engine 앱에 API를 배포해야 합니다. 이전 App Engine 앱을 다시 사용하는 경우 버전 1 경로인 /_ah/spi
로 시작되는 요청이 경로가 /_ah/api
로 시작되어야 하는 Endpoints 프레임워크 버전 2 백엔드로 라우팅될 수 있습니다.
자동 확장 인스턴스의 성능 저하
App Engine은 기본, 수동, 자동이라는 세 가지 확장 유형을 제공합니다. 자동 확장 인스턴스는 Endpoints 프레임워크가 사용하는 백그라운드 스레드를 지원하지 않습니다. Endpoints 프레임워크는 무엇보다도 할당량을 확인하고 API 활동을 보고하기 위해 Google 서비스와 통신해야 합니다. 기본 및 수동 확장 인스턴스의 경우, 요청 속도가 느려지지 않도록 백그라운드 스레드가 이러한 통신을 수행합니다. 그러나 자동 확장 인스턴스는 백그라운드 스레드를 지원하지 않습니다. 따라서 Google 서비스와의 통신이 요청 중에 수행됩니다. Endpoints 프레임워크 작동에는 문제가 없지만 성능이 저하될 가능성이 있습니다.
이러한 문제로 인해 다른 확장 유형을 구성해야 할 수 있습니다. App Engine 문서의 다음 섹션을 참조하세요.
후행 슬래시가 있는 경로는 지원되지 않음
gcloud endpoints services deploy
를 사용하여 OpenAPI 문서를 배포할 때 Cloud Endpoints는 후행 슬래시가 있는 경로가 포함된 OpenAPI 문서를 거부합니다. 예를 들면 다음과 같습니다.
paths: "/echo/": post: description: "Echo back a given message."
Endpoints 프레임워크에서는 Python 메서드 데코레이터 또는 자바 메서드 주석의 후행 슬래시를 삭제해야 합니다.
자바
이 섹션에서는 자바용 Endpoints 프레임워크의 알려진 문제를 설명합니다.
레거시(v1) 자바 Endpoints Frameworks
자바용 Endpoints Frameworks 버전 1에는 열거형이 주석 처리되면 예외가 발생하는 버그가 있습니다. 이 문제는 이전 버전의 Jackson에 대한 종속성으로 인해 발생합니다. 이 문제를 해결하려면 Endpoints 프레임워크 버전 2로 마이그레이션해야 합니다.
Python
이 섹션에서는 Python용 Endpoints 프레임워크의 알려진 문제를 설명합니다.
오류 메시지: ImportError: cannot import name locked_file
requirements.txt
파일과 함께 pip install
을 실행하면 ImportError: cannot import name locked_file
오류 메시지가 나타날 수 있습니다. pip
가 google-endpoints-api-management
와 호환되지 않는 oauth2client
패키지 버전을 설치할 때 이 문제가 발생합니다. 이 문제를 해결하려면 requirements.txt
파일에서 google-endpoints
줄과 google-endpoints-api-management
줄이 먼저 나타나도록 합니다. 예를 들면 다음과 같습니다.
이 줄 뒤에 다른 요구사항을 추가합니다.
로컬에서 테스트 시 API가 404
오류 반환
증상: dev_appserver.py
를 사용하여 로컬에서 API를 테스트하면 모든 엔드포인트가 404
를 반환하지만, App Engine에 API를 배포하면 엔드포인트가 정상적으로 응답합니다. Django-six 라이브러리를 사용하는 애플리케이션에서 이 문제가 발견되었습니다.
이 문제는 Python용 Endpoints 프레임워크 라이브러리와 Django-six 라이브러리에 공통적으로 포함된 python-future
라이브러리 간의 버전 충돌로 인해 발생합니다. 충돌을 일으키는 Django-six 라이브러리의 정확한 버전은 아직 확인되지 않았습니다.