如何在本地测试AppEngine中的多个域设置?

时间:2011-03-26 12:01:13

标签: google-app-engine dns subdomain multiple-domains

在问题Working with subdomain in google app engine中,建议使用以下代码。

applications = {
  'product.example.com': webapp.WSGIApplication([
    ('/', IndexHandler),
    ('/(.*)', ProductHandler)]),
  'user.example.com': webapp.WSGIApplication([
    ('/', IndexHandler),
    ('/(.*)', UserHandler)]),
}

def main():
  run_wsgi_app(applications[os.environ['HTTP_HOST']])

if __name__ == '__main__':
  main()

我的问题是如何在本地测试?当我在本地测试它时,主机是“localhost:8080”而不是任何域。

1 个答案:

答案 0 :(得分:2)

Hosts文件中创建两个新条目:

127.0.0.1       product.example.com
127.0.0.1       user.example.com

并在默认的Http端口80上运行本地GAE应用程序。

如果由于某种原因,您无法在端口80上运行GAE,您可以尝试修改application.py以匹配本​​地端口号,如下所示:

if os.environ['SERVER_SOFTWARE'].startswith('Dev'):
    PORT=':8080'
else:
    PORT=''

applications = {
  'product.example.com%s' % PORT: webapp.WSGIApplication([
    ('/', IndexHandler),
    ('/(.*)', ProductHandler)]),
  'user.example.com%s' % PORT: webapp.WSGIApplication([
    ('/', IndexHandler),
    ('/(.*)', UserHandler)]),
}

或者甚至更好地修改这样的主要功能(感谢@ Nick的评论):

def main():
  run_wsgi_app(applications[os.environ['HTTP_HOST'].split(':')[0]])

您应准备好使用以下地址测试本地应用程序:
http://product.example.com:8080
http://user.example.com:8080

请务必切换回Hosts文件,以便能够访问制作服务器。