Google App Engine上的Python应用程序如何确定它是否被提升?

时间:2017-06-22 15:09:52

标签: python google-app-engine

我找到了一个非常方便的函数google.appengine.api.modules.modules.get_hostname(),它允许我的Python应用程序在Google App Engine上运行时检索自己的主机名。

我在我的应用程序中构建了一个辅助函数,它借助此函数构造绝对URL。这些URL在测试中非常有用,因为它们允许我将OAuth流等内容返回到正确的位置。

import six

from google.appengine.api.modules.modules import get_hostname


INSECURE_HOST_WHITELIST = ('localhost',)


def get_redirect_url(path, secure=None):
    assert isinstance(path, six.string_types), "The path argument must be a string."

    if path:
        path = '/' + path.lstrip('/')

    hostname = get_hostname()
    port = None
    try:
        hostname, port = hostname.split(':', 1)
    except ValueError:
        pass

    if secure is None:
        if hostname.lower() in INSECURE_HOST_WHITELIST:
            secure = False
        else:
            secure = True

    schema = 'http' + ('s' if secure else '')

    return schema + '://' + hostname + (':' + port if port is not None else '') + path

然而,在制作中,此功能的用处要小得多,因为如果我的用户通过类似https://www.myawesomeapp.com/的内容访问我的应用,我不希望OAuth流程将其返回到{{{ 3}}

我的问题是:我的帮助函数是否有办法发现它是否正在运行升级模块(即接收流量的模块),并相应地返回规范服务器主机名?

0 个答案:

没有答案