在Google App Engine本地开发服务器

时间:2017-12-28 20:38:24

标签: python google-app-engine python-requests

我有一个用于我的Web服务的SDK,它通过PyPI作为Python库分发。我的库使用requests使用典型的类似REST的请求与后端进行通信。

我希望我的库与Google App Engine(GAE)上托管的应用程序兼容。根据{{​​3}}:

  

要使用请求,您需要同时安装两个请求   使用销售说明请求工具带。

     

安装完成后,使用requests_toolbelt.adapters.appengine模块   配置使用URLFetch的请求:

所以我按照那里给出的例子,在我的图书馆的主模块中有这个:

  if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'):
        import requests_toolbelt.adapters.appengine
        requests_toolbelt.adapters.appengine.monkeypatch()

当使用我的库的客户端应用程序实际上在App Engine实例上运行时,这似乎就可以了。

但是,当使用the GAE documentation on HTTP requests在本地运行客户端应用程序时,os.getenv('SERVER_SOFTWARE')会返回"Development/2.0",因此不会执行monkeypatch。我在尝试发出请求时遇到了这些错误:

ConnectionError: ('Connection aborted.', error(13, 'Permission denied'))

如何检测我的库的主机应用程序是否正在开发Web服务器内的Google App Engine本身,中运行 ?检查“开发/ 2.0”似乎不会有足够的区别。

或者,在运送需要支持“典型”网络请求的共享Python库时,是否有更好的通用模式?

1 个答案:

答案 0 :(得分:2)

通过Google Cloud SDK,似乎Google自己确定我们是否在生产或开发(dev_appserver.py)Google App Engine环境中运行的方法确实是为了查找{ {1}}。来自apitools/base/py/util.py

SERVER_SOFTWARE