繁体   English   中英

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

[英]Getting the Server URL in Google App Engine using python

如何让App Engine生成当前正在运行的服务器的URL?

如果应用程序在开发服务器上运行,则应返回

http://localhost:8080/

如果该应用程序正在Google的服务器上运行,则应返回

http://application-name.appspot.com

您可以通过self.request.url从Webapp处理程序中获取用于发出当前请求的URL,也可以使用self.request.environ字典将其组合在一起(您可以在WebOb文档中阅读-请求从webob继承)

您不能“获取服务器的URL”本身,因为可以使用许多URL指向同一实例。

如果您的目的只是发现您是否正在开发或生产中,请使用:

'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的参数的完整说明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM