最新的Google App Engine版本支持Python中的新Task Queue API。我正在比较此API的功能与现有的Cron service。对于非用户启动的后台作业,例如抓取RSS提要并按日间隔解析它。可以并且应该将Task Queue API用于非用户发起的请求,例如这种情况吗?Google App Engine - 任务队列与Cron Jobs
48
A
回答
24
我会说“排序”。关于任务队列要记住的事情是:
1)每分钟/小时/天的操作限制与定期重复某些操作的限制不同。即使将令牌桶大小设置为1,我也不认为您可以保证这些重复会均匀分布。这取决于他们认为队列实现为令牌桶时的严重程度,以及该语句是否应该是界面的保证部分。这是实验室,没有任何保证。
2)如果一个任务失败,那么它被重新排序。如果一个cron作业失败,那么它会被记录并且不会重试,直到它再次到期。因此,cron作业的行为方式与添加自身副本然后刷新Feed的任务不同,或者作为刷新Feed的任务,然后添加自己的副本。
使用任务模拟cron作业很可能是可能的,但我怀疑它是值得的。如果你正在努力解决一个需要30秒以上运行的cron作业(或者其他请求限制),那么你可以将作品分成几部分,并且有一个cron作业,将所有作品添加到任务队列。有一些关于异步urlfetch的讨论(在GAE博客中),这可能是更新RSS源的最佳方式。
5
我看待它的方式是,如果我只是解析一个RSS源,Cron作业可能就足够好了。如果我必须解析用户或任何其他系统变量在运行时指定的X个RSS源,那么我将每次选择任务。
我只是这样说,因为在过去,我不得不定期执行许多用户定义的twitter搜索和Cron作业。我结束了一个非常糟糕的排队系统来执行需要运行的请求 - 它没有执行任何操作,吨的规模,它没有帮助,而且一个cron工作的最小间隔只有1分钟(我在一天中的搜索时间比分钟多)。
关于任务的很酷的事情是你可以给他们一个ETA,所以你可以说我希望将来会执行47秒,或者我希望在12:30执行。
15
相关问题
- 1. Google App Engine - Cron或任务队列?
- 2. Google App Engine,任务队列
- 3. Google App Engine任务队列错误
- 4. Google App Engine Python Cron
- 5. Google App Engine - 任务队列名称和事务
- 6. 谷歌App Engine任务队列
- 7. 在Google App Engine中禁用任务队列重试
- 8. Google App Engine:如何使用任务队列进行此处理?
- 9. Google App Engine中任务队列的时间限制
- 10. Google App Engine任务队列获取统计失败
- 11. 如何获取Google App Engine任务队列失败的通知
- 12. Google App Engine Python Cron Job
- 13. Google App Engine中的延迟队列
- 14. Google App Engine上的Laravel队列
- 15. Google App Engine上的Laravel任务计划
- 16. Google App Engine - 任务依赖关系
- 17. Google App Engine任务截止日期
- 18. Google App Engine与Eclipse?
- 19. 如何设置使用任务队列和GWT的Google App Engine项目?
- 20. Google App Engine Java任务队列如何用于用户的批量调度?
- 21. 如何在App Engine之外使用Google Pull任务队列REST API?
- 22. 如何使用Google App Engine上的任务队列获取返回值(如Ajax)
- 23. Cron作业,任务队列或延期任务?
- 24. Cron文件 - 禁止访问(Google App Engine)
- 25. Google App Engine上的Cron作业
- 26. Google App Engine Cron时间表和长度
- 27. 获得在谷歌App Engine的任务队列
- 28. App Engine中的自定义任务队列?
- 29. 谷歌App Engine开发任务队列未运行
- 30. 在金字塔内使用App Engine任务队列
异步网址抓取存在的今天,看到http://code.google.com/appengine/docs/python/urlfetch/asynchronousrequests.html - 但我不知道它是如何将是更新RSS源的最佳最佳方式;也许你有其他想法? – 2009-06-22 17:52:05