2009-06-22 133 views

回答

24

我会说“排序”。关于任务队列要记住的事情是:

1)每分钟/小时/天的操作限制与定期重复某些操作的限制不同。即使将令牌桶大小设置为1,我也不认为您可以保证这些重复会均匀分布。这取决于他们认为队列实现为令牌桶时的严重程度,以及该语句是否应该是界面的保证部分。这是实验室,没有任何保证。

2)如果一个任务失败,那么它被重新排序。如果一个cron作业失败,那么它会被记录并且不会重试,直到它再次到期。因此,cron作业的行为方式与添加自身副本然后刷新Feed的任务不同,或者作为刷新Feed的任务,然后添加自己的副本。

使用任务模拟cron作业很可能是可能的,但我怀疑它是值得的。如果你正在努力解决一个需要30秒以上运行的cron作业(或者其他请求限制),那么你可以将作品分成几部分,并且有一个cron作业,将所有作品添加到任务队列。有一些关于异步urlfetch的讨论(在GAE博客中),这可能是更新RSS源的最佳方式。

+1

异步网址抓取存在的今天,看到http://code.google.com/appengine/docs/python/urlfetch/asynchronousrequests.html - 但我不知道它是如何将是更新RSS源的最佳最佳方式;也许你有其他想法? – 2009-06-22 17:52:05

5

我看待它的方式是,如果我只是解析一个RSS源,Cron作业可能就足够好了。如果我必须解析用户或任何其他系统变量在运行时指定的X个RSS源,那么我将每次选择任务。

我只是这样说,因为在过去,我不得不定期执行许多用户定义的twitter搜索和Cron作业。我结束了一个非常糟糕的排队系统来执行需要运行的请求 - 它没有执行任何操作,吨的规模,它没有帮助,而且一个cron工作的最小间隔只有1分钟(我在一天中的搜索时间比分钟多)。

关于任务的很酷的事情是你可以给他们一个ETA,所以你可以说我希望将来会执行47秒,或者我希望在12:30执行。