GAE中的后台进程
我正在使用Google App Engine和Django 1.0(app-engine-patch)开发一个网站。
我的程序有很大一部分需要在后台运行,主要是修改本地数据,还要向一个远程网址发送信息。
有没有人能推荐一个有效的方法来实现这个功能?
3 个回答
我也支持dbr的建议,可以看看这个链接:http://code.google.com/appengine/docs/python/config/cron.html(希望未来能有更好的方法,比如承诺中的“任务队列”)。
不过,我觉得如果你真的需要进行大量(也就是占用CPU很多)的后台处理,GAE可能不是最合适的环境。你可以考虑在其他环境中运行这些重负载的后台任务,然后通过一些方式和GAE进行沟通,比如使用“批量加载/下载”的API,具体可以参考这个链接:http://code.google.com/appengine/docs/python/tools/uploadingdata.html(还有这个http://code.google.com/appengine/docs/python/tools/uploadingdata.html#Downloading_Data_from_App_Engine是关于下载的部分)。
谷歌的文档只描述了如何使用命令行工具appcfg.py来实现这些功能(我找不到它使用的API的详细文档!),不过如果你需要更程序化地使用这些API,从appcfg.py的源代码中找出这些内容也不难。
可以看看这个链接:任务队列的Python API。
如果不使用第三方系统,我觉得你现在唯一的选择就是使用cron功能。
不过,你还是会受到GAE(谷歌应用引擎)脚本执行时间的限制,但这个过程不会在页面加载时发生。
关于后台处理的计划,可以看看这个App Engine的问题#6,还有这个路线图更新。