当前位置:  开发笔记 > 编程语言 > 正文

Google App Engine - 任务队列与Cron Jobs

如何解决《GoogleAppEngine-任务队列与CronJobs》经验,为你挑选了3个好方法。

最新的Google App Engine版本支持Python中的新任务队列API.我正在比较这个API与现有Cron服务的功能.对于非用户启动的后台作业,例如抓取RSS源并按日间隔解析它.任务队列API可以并且应该用于非用户发起的请求吗?



1> Steve Jessop..:

我会说"有点".关于任务队列要记住的事情是:

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

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

很可能使用任务来模拟cron作业,但我怀疑这是值得的.如果你正在尝试解决一个运行时间超过30秒(或达到任何其他请求限制)的cron作业,那么你可以将工作分成几部分,并有一个cron作业,将所有部分添加到一个任务队列.有一些关于异步urlfetch的讨论(在GAE博客中?),这可能是更新RSS提要的最佳方式.


值得补充的是,您还可以使用cron作业来填充/管理任务队列,这样您就可以双管齐下.

2> mcotton..:

在我观看Google I/O视频之前,我不太了解这些差异.官方消息来源通常是最好的.

youtube视频

演示文稿中的幻灯片



3> Kinlan..:

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

我只是这样说,因为在过去我不得不定期执行许多用户定义的Twitter搜索并且使用Cron作业我结束了制作一个非常糟糕的排队系统来执行需要运行的请求 - 它没有扩展,它没有帮助,而cron作业的最小间隔只有1分钟(我有更多的搜索执行比当天的几分钟).

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

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有