簡體   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