如何解决使用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的参数的完整说明。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。