PyPI를 통해 Python 라이브러리로 배포되는 웹 서비스 용 SDK가 있습니다. 내 라이브러리는 일반적인 REST와 유사한 요청을 사용하여 백엔드와 통신하기 위해 requests을 사용합니다.Google App Engine 로컬 개발 서버에서 요청 사용
내 라이브러리가 Google App Engine (GAE)에서 호스팅되는 응용 프로그램과 호환되기를 바랍니다. the GAE documentation on HTTP requests에 따르면
요청을 사용하려면 vendoring 지침을 사용하여 두 요청과 요청 - 툴 벨트를 설치해야합니다.
그래서 내가 거기에 주어진 예를 따라 내 도서관의 주요 모듈이 있습니다 :
if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'):
import requests_toolbelt.adapters.appengine
requests_toolbelt.adapters.appengine.monkeypatch()
일단 설치는 URL을 가져올 수를 사용하는 구성 요청에 requests_toolbelt.adapters.appengine 모듈을 사용
내 라이브러리를 사용하는 클라이언트 응용 프로그램이 실제로 App Engine 인스턴스에서 실행되고있는 경우에이 트릭을 수행하는 것으로 보입니다.
그러나 클라이언트 응용 프로그램이 development web server (dev_appserver.py)을 사용하여 로컬로 실행되는 경우 os.getenv('SERVER_SOFTWARE')
은 "Development/2.0"
을 반환하므로 monkeypatch가 실행되지 않습니다. 요청을 발행 할 때 나는 이후 이러한 오류를 얻을 :
ConnectionError: ('Connection aborted.', error(13, 'Permission denied'))
? "Development/2.0"을 확인하는 것은 충분히 차별적 인 것처럼 보이지 않습니다.
또는 "일반적인"네트워크 요청에 대한 지원이 필요한 공유 파이썬 라이브러리를 출하 할 때 따라야 할 일반적인 패턴이 있습니까?