【发布时间】:2014-10-18 12:29:13
【问题描述】:
我想创建一个延迟工作,将在一年间隔后连续运行?那是在每年的特定日期。我怎样才能使用延迟作业来实现这一点?
【问题讨论】:
标签: ruby-on-rails scheduled-tasks delayed-job
我想创建一个延迟工作,将在一年间隔后连续运行?那是在每年的特定日期。我怎样才能使用延迟作业来实现这一点?
【问题讨论】:
标签: ruby-on-rails scheduled-tasks delayed-job
使用whenever gem。 Here 是很好的截屏视频
【讨论】:
whenever 这样的 gem,这是 cron 的一个很好的红宝石抽象。
使用delay-jobs gem,这样你就可以将运行时间作为参数添加如下:
Notifier.delay(run_at: 1.years.from_now).signup(@user)
要将此代码作为日常任务运行,您需要阅读Resque gem、resque-scheduler gem,并参阅helpful question
【讨论】:
我个人喜欢rufus-scheduler。从文档中,您将有很多方法来安排您的任务:
require 'rufus-scheduler'
scheduler = Rufus::Scheduler.new
# ...
scheduler.in '10d' do
# do something in 10 days
end
scheduler.at '2030/12/12 23:30:00' do
# do something at a given point in time
end
scheduler.every '3h' do
# do something every 3 hours
end
scheduler.cron '5 0 * * *' do
# do something every day, five minutes after midnight
# (see "man 5 crontab" in your terminal)
end
另外,请注意,如果你杀死你的应用程序,它会失去计划,因此建议将信息保存在数据库中并在启动时检索它。
【讨论】: