如何在Python中测试是否在Google App Engine SDK中?

41 投票
7 回答
10024 浏览
提问于 2025-04-15 17:06

在开发的时候,我想处理一些事情的方式和我最终上传到谷歌服务器时会有所不同。

有没有什么简单的方法可以测试一下我现在是在开发环境还是在正式环境呢?

7 个回答

6

基于同样的技巧,我在我的代码中使用了这个函数:

def isLocal():
    return os.environ["SERVER_NAME"] in ("localhost", "www.lexample.com")

我对我的 /etc/hosts 文件进行了自定义,这样我就可以通过在我的域名之前加一个“l”来访问本地版本,这样从本地环境切换到生产环境就变得非常简单。

举个例子:

  • 生产环境的网址是 www.example.com
  • 开发环境的网址是 www.lexample.com
8

app.yaml 文件里,你可以添加一个叫 IS_APP_ENGINE 的环境变量。

env_variables:
  IS_APP_ENGINE: 1

然后在你的 Python 代码中,可以检查这个变量是否已经被设置。

if os.environ.get("IS_APP_ENGINE"):
    print("The app is being run in App Engine")
else:
    print("The app is being run locally")
61

查看:https://cloud.google.com/appengine/docs/python/how-requests-are-handled#Python_The_environment

以下环境变量是CGI标准的一部分,在App Engine中有特别的表现:

SERVER_SOFTWARE

开发网页服务器中,这个值是"Development/X.Y",其中"X.Y"代表运行时的版本。

当在App Engine上运行时,这个值是"Google App Engine/X.Y.Z"。

撰写回答