Appengine 推送队列任务状态
我正在往Appengine的推送队列里添加一个需要很长时间才能完成的任务。然后我想把用户引导到一个状态页面,用户在刷新这个页面时,可以看到这个任务完成了多少部分。
除了使用外部数据库来跟踪任务的进度,我还有哪些其他选择呢?
(我没有找到关于任务或在其他视图中获取任务的相关文档。我在网上找到的唯一信息是三年前的一个Stack Overflow回答:在Google App Engine中检查任务队列的状态)
1 个回答
2
除了使用数据存储,你还可以:
- 在内存缓存中为每一块工作保持一个计数器,并且有一个总的块数计数器,这样你就能知道4块工作中完成了2块,也就是50%完成了。
- 使用管道(Pipelines),它可以提供更多关于在App Engine上异步工作进度的信息。你可以查看这个链接了解更多:https://code.google.com/p/appengine-pipeline,或者查看入门指南:https://code.google.com/p/appengine-pipeline/wiki/GettingStarted。
- 推送队列(Push queues)在提供正在运行的任务完成状态方面效果不太好。你可以考虑使用拉取队列(Pull queues),把所有的工作单元分成不同的拉取队列任务。拉取队列有一个实验性功能,你可以给每个项目打标签,比如用户ID,然后通过标签查询拉取队列中的项目(https://developers.google.com/appengine/docs/python/taskqueue/overview-pull#Python_Leasing_tasks),这样你就能了解有多少项目正在被租用或待处理。