2011-02-16 26 views
3

我在GAE上使用我的域的一些子域。例如,它們是blog.mysite.com,projects.mysite.com和docs.mysite.com。因爲它是現在配置,它們都具有這樣的設置處理中main.py爲子域配置GAE應用程序app.yaml

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? 謝謝!

回答

8

這不完全是你的問題的答案,但你可能想看看webapp2。它是Google Web應用程序的直接替代品,它增加了一些非常有用的功能,包括可以按域進行路由的新路由系統。

查看routes.py文件的示例。你想要DomainRoute

SUBDOMAIN_RE = '^([^.]+)\.app-id\.appspot\.com$' 

    app = WSGIApplication([ 
     DomainRoute(SUBDOMAIN_RE, [ 
      Route('/foo', 'FooHandler', 'subdomain-thing'), 
     ]), 
     Route('/bar', 'BarHandler', 'normal-thing'), 
    ]) 

尼克·約翰遜寫道a blog post約而webapp2而回。

1

可能最簡單的方法是導入合適的模塊並調用它的main()函數,並在獨立模塊中而不是在main.py中創建所有WSGI應用程序。 (我自己的微框架在WSGI應用程序本身內部完成了所有這些路由,這讓我感到很難看,因爲我正在重新思考我的選擇,以堅持基本上擴展的webapp樣式路由。)

Your title mentions app。 YAML;你只想配置所有請求到main.py並在那裏進行調度,因爲當前的運行時不允許你在app.yaml中進行主機映射(雖然有一個open issue請求這個你可以星)。這不幸意味着您可以選擇不使用靜態處理程序,或者在所有子域中都使用相同的靜態內容URL。

相關問題