我想在不久的将来安排一份工作。我看到像delayed_job这样的工具可以异步执行某些任务,但它似乎用于5分钟内安排的任务。另一个解决方案可能是做一个cron,但效率不高。
有更好的方法吗?我想确定,如果我重新启动服务器,则不会删除已安排的任务。
答案 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点开始,而不管一周中的哪一天。