如何获取托管app引擎/ python网站的域名

时间:2010-10-16 06:08:25

标签: python google-app-engine

我有一个appengine webapp,我需要设置HTTP Location变量以重定向到同一个webapp中的另一个页面。为此我需要产生绝对链接。出于便携性原因,我不能直接使用我目前正在使用的域名。

是否可以在python代码中生成托管webapp的域名。

4 个答案:

答案 0 :(得分:2)

如果您使用的是webapp框架,则当前网址位于self.request.url。各种组件在self.request的属性中被分解,记录为here

答案 1 :(得分:1)

我认为我完全不了解getdomain名称的必要性。但请查看谷歌应用引擎提供的重定向API是否可以完成这项工作。 http://code.google.com/appengine/docs/python/tools/webapp/redirects.html

答案 2 :(得分:1)

这个问题答案很差。您需要域名来生成以下页面:robots.txt,sitemap.xml以及许多不是相对链接的内容。我试过用这个:

 from google.appengine.api.app_identity import get_default_version_hostname
 host = get_default_version_hostname()

但是...升级到您自己的域名时效果不佳...因为我仍然获得了appspot.com名称。

答案 3 :(得分:0)

如果您的应用使用custom domain name,那么 get_default_version_hostname()将返回 myapp.appspot.com 1.default.myapp。 appspot.com 不是 mydomain.com

要在请求中获取域名,请使用:

hostname = self.request.host 

根据webob docs

  

返回'HTTP_HOST中提供的主机名,并返回到   SERVER_NAME'

这不适用于cron任务或客户端调用 myapp.appspot.com 而不是 mydomain.com

另见问题:https://code.google.com/p/googleappengine/issues/detail?id=11993 get_default_version_hostname()在托管VM上的/ _ah / start处理程序中不起作用。解决方法是设置: os.environ ['DEFAULT_VERSION_HOSTNAME'] = os.environ ['GAE_APPENGINE_HOSTNAME']