【问题标题】:How can my code tell if it's running on Google's server or my local development server? [duplicate]我的代码如何判断它是在 Google 的服务器上运行还是在我的本地开发服务器上运行? [复制]
【发布时间】:2011-01-24 13:09:23
【问题描述】:

可能重复:
In Python, how can I test if I'm in Google App Engine SDK?

是否有一个环境标志可以判断我的代码是在生产服务器上还是在开发服务器上运行?

我希望能够使用 if 语句根据这个标志做一些不同的事情。

(具体情况:我要读取的文本文件中的换行符在两种环境中的处理方式不同。)

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:
    if os.environ.get('SERVER_SOFTWARE','').startswith('Development'):
        DEBUG = True
        logging.debug("[*] Debug info activated")
    

    【讨论】:

    • 这是一种方法 - 太糟糕了,谷歌没有提供像这样的简单功能 :( 只需关注 google_appengine SDK 中的 SERVER_SOFTWARE,你会发现 ~8 个调用在做那个测试
    • $SERVER_SOFTWARE 环境。变种。 App Engine 标准 (here) 和灵活 (here) 默认环境中似乎缺少。变种。 2021 年。如果您必须依赖默认环境,请使用 $GAE_ENV。变种。我会高度推荐定义 env。变种。在您的app.yaml 文件中(进一步阅读here)。
    【解决方案2】:

    对于 Google App Engine,由于我被告知您无法导入套接字,因此您可能可以使用该事实来确定您是否在 GAE 上运行。这个解决方案不是 100% 万无一失,但它应该做你想做的事。把它放在 settings.py 中。

    try:
        import socket
    except ImportError:
        DEBUG = TRUE
    

    对于使用 Django 但不是 GAE 的任何人,您都可以使用它。将“devserver”更改为您的开发服务器的主机名。

    import socket
    if socket.gethostname() == 'devserver':
        DEBUG = TRUE
    

    然后在你需要检查代码中的 DEBUG 变量的地方

    from django.conf import settings
    
    if settings.DEBUG:
        newline = '\n'
    

    【讨论】:

    • 我认为应用引擎不允许您导入套接字。您可能想要编辑您的帖子,以免错误信息被传播。 (我给你投了赞成票,因为我认为人们不应该投反对票,也不应该给出理由。)
    • 哦,谢谢。我不使用 GAE,但这确实适用于普通 Django。我没有意识到 GAE 有多么有限。
    猜你喜欢
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    相关资源
    最近更新 更多