谷歌应用引擎:处理程序和WSGI网址

6 投票
1 回答
2588 浏览
提问于 2025-04-16 01:51

我刚接触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 个回答

9

这两种网址路由的方法都是可以的。

基于app.yaml的网址路由
如果你能轻松地把你的应用结构调整为使用app.yaml路由(和授权),那么试试这个方法是值得的:这样你需要调试、测试和维护的代码会少一些。

这里有一个例子(来自谷歌),里面有多个入口点:http://google-app-engine-samples.googlecode.com/svn/trunk/gdata_feedfetcher/

使用app.yaml授权的性能应该更好:这样你的Python脚本就不需要运行来判断用户是否是网站的管理员。

一个网址映射表
如果你的应用需要的功能超出了基本的网址路由和授权,那么你可能会发现你的app.yaml文件比较简单,而需要使用一个更大的网址映射表。

比如说,你想给所有用户显示一个页面,但还希望管理员能看到一个“登录”链接。这个代码(用于一个简单的博客)就使用了这样的结构。

撰写回答