在几天或几个月内安排任务

时间:2014-07-30 12:47:22

标签: ruby-on-rails ruby

我想在不久的将来安排一份工作。我看到像delayed_job这样的工具可以异步执行某些任务,但它似乎用于5分钟内安排的任务。另一个解决方案可能是做一个cron,但效率不高。

有更好的方法吗?我想确定,如果我重新启动服务器,则不会删除已安排的任务。

2 个答案:

答案 0 :(得分:2)

您可以使用rufus-scheduler。从文档中获取的示例显示了如何执行此操作:

require 'rufus-scheduler'

scheduler = Rufus::Scheduler.new


scheduler.at '2030/12/12 23:30:00' do
  # do something at a given point in time
end

它还允许您以不同的方式安排:

scheduler.in '10d' do
  # do something in 10 days
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

答案 1 :(得分:1)

看一下whenever gem

好像在使用

every '0 0 23 12 *' do 
  ...
end

可以为此工作。它可以采用cron语法minute hour day month day-of-week。所以这将在每年的12月23日上午12点开始,而不管一周中的哪一天。