【问题标题】:Run background-job every hour for n number of times(ruby on rails)每小时运行一次后台作业 n 次(ruby on rails)
【发布时间】:2017-07-05 12:29:13
【问题描述】:

我正在使用 resque 进行作业调度。我想每 1 小时运行一次工作,并且只运行 N 次。 我还想将作业中的计数作为参数传递

例如:

i=0
50.times do 
   every 1.hour, roles: [:whenever_cron] do
     runner "Resque.enqueue(SomeJob, i+1)"
   end 
end

我该怎么做?

注意:-我不想每小时运行 50 个作业。我想运行 1 个工作 50 次

【问题讨论】:

  • 计数需要存储在数据库中

标签: ruby-on-rails ruby cron


【解决方案1】:

调度语法适用于重复作业。那些反复发生的事情,直到时间的尽头。

对于单次作业,您可以将它们排入队列,并带有可选的延迟(这是您需要的)。因此,您可以一次将整批作业排入队列,增量为 1 小时:

1.upto(50).each do |x|
  Resque.enqueue_in(x.hours, SomeJob)
end 

【讨论】:

  • ❤ 这是 X/Y 问题的完美示例。
猜你喜欢
  • 2019-07-10
  • 2018-05-19
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
  • 2018-02-18
  • 2017-05-26
  • 2019-07-31
  • 1970-01-01
相关资源
最近更新 更多