首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sidekiq + Sidetiq每2小时重复一次?

Sidekiq + Sidetiq每2小时重复一次?
EN

Stack Overflow用户
提问于 2014-01-06 00:52:34
回答 2查看 9.4K关注 0票数 4

我不能准确地找到如何将我的循环规则设置为每2小时启动一次作业。目前,我的工作是每天凌晨3点(我想)在我的Sidekiq worker类中使用类似以下内容:

代码语言:javascript
复制
recurrence do
  daily.hour_of_day(3)
end

让它每2小时或每小时运行一次的最好方法是什么?我相信,这使用了引擎盖下的icecube宝石。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-06 01:57:16

你试过hourly(2)吗?

代码语言:javascript
复制
recurrence do
  hourly(2)
  # if you want to specify the exactly minute or minutes
  # `minute_of_hour(30, ...)`
  # hourly(2).minute_of_hour(30)
end

它在icecube's README中,但我还没有试过。

你也可以这样做:

代码语言:javascript
复制
recurrence do
  # set recurrence to [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22]
  daily.hour_of_day(*(0..23).to_a.select { |hour_of_day| hour_of_day.even? })
end

但我认为hourly(2)是更好的选择。

没有Sidetiq的另一种选择是在结束perform方法之前添加self.perform_in(2.hours)

代码语言:javascript
复制
def perform
   # ...
   self.class.perform_in(2.hours)
end

更新:

https://github.com/tobiassvn/sidetiq/wiki/Known-Issues

不幸的是,使用ice_cube的interval方法在启动(它往往会在相当长的一段时间内占用100%的CPU )和每次循环运行时都非常慢。这是因为它会计算自计划的开始时间以来的所有可能发生的情况。

因此,最好使用更显式的方式

代码语言:javascript
复制
recurrence { hourly.minute_of_hour(0, 15, 30, 45) }
票数 19
EN

Stack Overflow用户

发布于 2015-03-15 23:25:46

hourly(2)即使在Ruby 2.0.0和更高版本中也是不好的主意吗?

Sidetiq维基说-

运行在Ruby1.9.3.然而,在Ruby 2.0.0+下这不是一个问题。

如果我在这里误解了什么,很抱歉,我们确实使用每小时作为递归,但是在Ruby 2.0.0和更高版本中,在本地或服务器上没有注意到这个问题。但是我会彻底检查的。如果有更多细节,aledalgrande和Pablo会有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20936305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档