Google AppEngine:仅在本地开发中使用python库。识别环境

时间:2017-01-21 03:13:50

标签: python google-app-engine

我的应用程序使用了AppEngine标准环境提供的python库。 为了将库包含在我的本地开发中,我按照https://cloud.google.com/appengine/docs/python/tools/using-libraries-python-27上的说明进行操作。

# appengine_config.py
from google.appengine.ext import vendor

# Add any libraries install in the "lib" folder.
vendor.add('lib')

我把库安装到一个文件夹' lib'并在appengine_config.py中添加了vendor.add(' lib') 我想" vendor.add(' lib')"仅在应用程序位于本地而非Google Cloud中时才有效/运行。

识别环境的正确方法是什么? appengine_config.py中的以下内容如何?

if 'localhost' in os.environ['SERVER_NAME']:
    vendor.add('lib')

3 个答案:

答案 0 :(得分:2)

如果您的应用使用了GAE提供的库,那么您没有正确地包含它(您正在销售它,这是您使用GAE提供的库所做的事情)。来自Requesting a library

  

您可以使用libraries: directive in app.yaml

申请图书馆
libraries:
- name: PIL
  version: "1.1.7"
- name: webob
  version: "1.1.1"
     

请注意:库必须是受支持的runtime-provided third-party libraries.

之一      

部署后,App Engine将向您提供所请求的库   运行环境。有些库必须是installed locally

答案 1 :(得分:1)

根据official documentation,您应该查看SERVER_SOFTWARE环境变量:

  

要确定您的代码是在生产环境中运行还是在本地开发服务器中运行,请检查os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/')是否正确。当这是True时,您正在投入生产;否则,您将在本地开发服务器中运行。

答案 2 :(得分:1)

与@mgilson给出的答案类似,我倾向于使用

DEBUG = os.environ.get('SERVER_SOFTWARE','').startswith('Dev')

如果DEBUG为True,那么你在本地环境中运行,否则它就会运行。