【问题标题】:Introducing randomness of time using cron and task queue使用 cron 和任务队列引入时间随机性
【发布时间】:2011-08-02 17:10:03
【问题描述】:

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

我有少量定期运行的作业,但我希望这些作业随机执行。因此,与其在每周二下午 2:00 运行作业,我希望它在每周二“下午 2:00 到 5:00”之间运行。

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

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

我意识到另一种解决方案是创建一个速度非常慢的任务队列,当 cron 作业填满队列时,它会在执行此操作之前随机重新排序任务列表。

App Engine 用户有什么想法吗?

【问题讨论】:

  • 你能详细说明一下吗?它是否需要每天在不同的随机时间发生,或者您只是希望它为每个作业选择一个时间然后每天运行它?你是什​​么意思“重新排队任务队列作业并限制我重试的次数” - 为什么重试相关?
  • @nick 我编辑了问题并重申了我当前的解决方案,并提出了一个替代解决方案。

标签: google-app-engine scheduled-tasks


【解决方案1】:

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

【讨论】:

  • 您所说的“随机倒计时”是什么任务队列机制?
  • 创建一个 0 到 10800 之间的随机数,并将其作为 countdown 任务参数 code.google.com/intl/it/appengine/docs/python/taskqueue/…
  • 优秀。我一直在使用任务队列,但从未注意到该参数!?谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-19
  • 2011-05-19
  • 2019-06-05
  • 1970-01-01
  • 2012-02-21
  • 2020-09-19
相关资源
最近更新 更多