使用cron和任务队列引入时间随机性

时间:2011-04-11 00:50:06

标签: google-app-engine scheduled-tasks

我正在寻找一些工程创意来解决Google App Engine上的问题。

我有少量定期运行的作业,但我希望这些作业能够随机执行。因此,我不希望每周二下午2点开始工作,而是希望每周二“下午2点到下午5点之间”运行。

目前,我正在使用以下算法...

  1. Cron工作每周二下午2:00运行
  2. cron处理程序查找要运行的特定作业的列表,并为每个离散任务创建任务队列事件。
  3. 相应的任务队列处理程序通过在1和N之间选择一个随机数来决定它是否应该实际运行。如果随机数是X,则执行作业。否则,它会创建一个新的任务队列事件以再次尝试。每个任务都有最大队列尝试次数,以保证作业在某个时刻实际完成。
  4. 我意识到另一个解决方案是创建一个速度非常慢的任务队列,当cron作业填满队列时,它会在执行此操作之前随机重新排序任务列表。

    App Engine用户的任何想法?

1 个答案:

答案 0 :(得分:7)

在下午2点有一个cron作业,在0到3小时之间随机倒计时排队任务?