【发布时间】:2011-08-02 17:10:03
【问题描述】:
我正在寻找一些工程创意来解决 Google App Engine 上的问题。
我有少量定期运行的作业,但我希望这些作业随机执行。因此,与其在每周二下午 2:00 运行作业,我希望它在每周二“下午 2:00 到 5:00”之间运行。
目前,我正在使用以下算法...
- Cron 作业每周二下午 2:00 运行
- cron 处理程序查找要运行的特定作业的列表,并为每个离散任务创建一个任务队列事件。
- 相应的任务队列处理程序通过选择一个介于 1 和 N 之间的随机数来决定它是否应该实际运行。如果随机数是 X,则执行作业。否则,它会创建一个新的任务队列事件以重试。每个任务都有最大数量的队列尝试,以保证作业在某个时间点实际完成。
我意识到另一种解决方案是创建一个速度非常慢的任务队列,当 cron 作业填满队列时,它会在执行此操作之前随机重新排序任务列表。
App Engine 用户有什么想法吗?
【问题讨论】:
-
你能详细说明一下吗?它是否需要每天在不同的随机时间发生,或者您只是希望它为每个作业选择一个时间然后每天运行它?你是什么意思“重新排队任务队列作业并限制我重试的次数” - 为什么重试相关?
-
@nick 我编辑了问题并重申了我当前的解决方案,并提出了一个替代解决方案。
标签: google-app-engine scheduled-tasks