Google app engine 如何在AppEngine中本地测试多个域设置?

Google app engine 如何在AppEngine中本地测试多个域设置?,google-app-engine,dns,subdomain,multiple-domains,Google App Engine,Dns,Subdomain,Multiple Domains,在问题中,建议使用以下代码 applications = { 'product.example.com': webapp.WSGIApplication([ ('/', IndexHandler), ('/(.*)', ProductHandler)]), 'user.example.com': webapp.WSGIApplication([ ('/', IndexHandler), ('/(.*)', UserHandler)]), } def ma

在问题中,建议使用以下代码

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”,而不是任何域。

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

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

如果出于某种原因,您无法在端口80上运行GAE,您可以尝试修改
应用程序.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的评论):

您应该准备好使用以下地址测试本地应用程序:


请记住切换回您的
主机
文件,以便能够访问生产服务器。

…或者您可以在设置主机文件条目后转到。@Nick不,您不能。主机文件不允许指定端口信息和。。指向product.example.com:8080与任何WSGIApplication都不匹配。@SystemPuntoot但我忘记了HTTP\U主机包含端口号。一个更好的方法是在匹配端口号之前从报头中删除端口号,不过这是另一个可行的解决方案;虽然我不太确定它是否允许在生产中使用。@systempuntoout-Er?为什么不呢?
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)]),
}
def main():
  run_wsgi_app(applications[os.environ['HTTP_HOST'].split(':')[0]])