谷歌应用引擎-使用cron和任务队列引入时间随机性



我正在寻找一些工程创意来解决谷歌应用引擎上的问题。

我有少量周期性运行的作业,但我希望这些作业在随机时间执行。因此,与其在每周二下午2点运行作业,不如让它在每周二"下午2点到5点之间"运行。

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

  1. Cron作业每周二下午2点运行
  2. cron处理程序查找要运行的特定作业列表,并为每个离散任务创建一个任务队列事件。
  3. 相应的任务队列处理程序通过在1到n之间选择一个随机数来决定它是否应该实际运行。如果随机数是X,则执行作业。否则,它将创建一个新的任务队列事件以再次尝试。每个任务都有一个最大队列尝试数,以保证作业在某个时间点实际完成。

我已经意识到另一个解决方案是创建一个具有非常慢的速率的任务队列,并且当cron作业填充队列时,它在执行之前随机重新排序任务列表。

App Engine用户有什么想法吗?

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

最新更新