【问题标题】:Configure GAE application app.yaml for subdomains为子域配置 GAE 应用程序 app.yaml
【发布时间】:2011-06-28 07:16:46
【问题描述】:

我的域在 GAE 上有一些子域。例如,它们是 blog.mysite.com、projects.mysite.com 和 docs.mysite.com。按照现在的配置,它们都在main.py中使用这样的设置进行处理:

def main():
    applications = {
        'blog.mysite.com': webapp.WSGIApplication([('/', BlogHandler)]),
        'projects.mysite.com': webapp.WSGIApplication([('/', ProjectsHandler)]),
        'docs.mysite.com': webapp.WSGIApplication([('/', DocsHandler)]),
    }
    util.run_wsgi_app(applications[os.environ['HTTP_HOST']])

如何将这些子应用程序分开以由不同的模块处理,所以我会有blog.pyprojects.pydocs.py 之类的东西? 谢谢!

【问题讨论】:

    标签: python google-app-engine yaml


    【解决方案1】:

    这并不完全是您问题的答案,但您可能想查看webapp2。它是谷歌 webapp 的直接替代品,添加了一些非常有用的功能,包括可以按域路由的新路由系统。

    查看routes.py 文件以获取示例。你会想要DomainRoute:

        SUBDOMAIN_RE = '^([^.]+)\.app-id\.appspot\.com$'
    
        app = WSGIApplication([
            DomainRoute(SUBDOMAIN_RE, [
                Route('/foo', 'FooHandler', 'subdomain-thing'),
            ]),
            Route('/bar', 'BarHandler', 'normal-thing'),
        ])
    

    Nick Johnson 不久前写了a blog post 关于 webapp2。

    【讨论】:

      【解决方案2】:

      可能最简单的方法是导入适当的模块并调用其main() 函数,然后在单独的模块中而不是在 main.py 中创建所有 WSGI 应用程序。 (我自己的微框架在 WSGI 应用程序本身内完成所有这些路由,这有点难看,以至于我正在重新考虑我选择坚持基本扩展的 webapp 风格的路由。)

      你的标题提到了 app.yaml;您只想将所有请求配置为转到 main.py 并在那里进行调度,因为当前运行时根本不允许您在 app.yaml 中进行主机映射(尽管有一个 open issue 请求这个你可以明星)。不幸的是,这意味着您只能选择不使用静态处理程序或在所有子域上使用相同的静态内容 URL。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-28
        • 1970-01-01
        • 1970-01-01
        • 2018-02-05
        • 2018-07-06
        • 1970-01-01
        • 2013-01-21
        相关资源
        最近更新 更多