使用python来获取Google App Engine中的服务器URL

问题描述

| 如何让App Engine生成当前正在运行的服务器的URL? 如果应用程序在开发服务器上运行,则应返回
http://localhost:8080/
如果该应用程序正在Google的服务器上运行,则应返回
http://application-name.appspot.com
    

解决方法

        您可以通过
self.request.url
从webapp处理程序中获取用于发出当前请求的URL,也可以使用
self.request.environ
dict将其组合在一起(您可以在WebOb文档上阅读-请求继承自webob) 您无法“获取服务器的网址”本身,因为可以使用许多网址来指向同一实例。 如果您的目的只是发现您是否正在开发或生产中,请使用:
\'Development\' in os.environ[\'SERVER_SOFTWARE\']
    ,        这是一个替代答案。
from google.appengine.api import app_identity
server_url = app_identity.get_default_version_hostname()
在开发应用服务器上,这将显示:   本地主机:8080 并在appengine上   your_app_id.appspot.com     ,        如果您使用webapp2作为框架,则很可能已经在Web应用程序中使用了URI路由。 http://webapp2.readthedocs.io/en/latest/guide/routing.html
app = webapp2.WSGIApplication([
    webapp2.Route(\'/\',handler=HomeHandler,name=\'home\'),])
使用
webapp2.uri_for()
构建URI时,只需传递
_full=True
属性即可根据当前运行时环境生成包含当前域,端口和协议的绝对URI。
uri = uri_for(\'home\')
# /

uri = uri_for(\'home\',_full=True)
# http://localhost:8080/
# http://application-name.appspot.com/
# https://application-name.appspot.com/
# http://your-custom-domain.com/
此函数可以在您的Python代码中使用,也可以直接从模板引擎中使用(如果您注册了它)-非常方便。 检查API参考中的webapp2.Router.build(),以获取有关用于构建URI的参数的完整说明。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...