谷歌应用引擎:处理程序和WSGI网址
我刚接触GAE(谷歌应用引擎),正在用webapp框架创建一个应用。我想知道在app.yaml文件中设置处理程序(handlers)和在WSGI中定义它们的区别是什么?
一开始我以为只有一个main.py主文件在运行WSGIApplication,但我发现如果想使用GAE的授权功能,就需要在处理程序中定义。这是不是意味着你要运行多个WSGIApplications呢?
我在阅读关于“需要登录或管理员权限”的文档时,发现他们为不同角色设置了不同的应用。
是不是可以这样理解呢?
-- general.py - 登录:
-- user.py - 登录:必需
-- admin.py - 登录:管理员
但这样把WSGI的URL分散到各处是不是不好呢?
如果我没记错的话,如果在GAE上运行Django,你只需要指向一个py文件,让框架自己处理所有事情,对吧?
我现在不想用Django,所以想问问有没有人能给我一些关于如何用webapp处理URL和处理程序的建议或最佳实践?
1 个回答
这两种网址路由的方法都是可以的。
基于app.yaml的网址路由
如果你能轻松地把你的应用结构调整为使用app.yaml路由(和授权),那么试试这个方法是值得的:这样你需要调试、测试和维护的代码会少一些。
这里有一个例子(来自谷歌),里面有多个入口点:http://google-app-engine-samples.googlecode.com/svn/trunk/gdata_feedfetcher/
使用app.yaml授权的性能应该更好:这样你的Python脚本就不需要运行来判断用户是否是网站的管理员。
一个网址映射表
如果你的应用需要的功能超出了基本的网址路由和授权,那么你可能会发现你的app.yaml文件比较简单,而需要使用一个更大的网址映射表。
比如说,你想给所有用户显示一个页面,但还希望管理员能看到一个“登录”链接。这个代码(用于一个简单的博客)就使用了这样的结构。