我希望从星期一到星期五上午11:00自动向所有供应商发送订单清单。我怎样才能做到这一点 ?
我正在使用Rails 5.1
我知道ActiveJobs具有Notifier.deliver_later功能,但如果我正确,它只适用于相对时间(例如:从现在起10小时)。我实际上需要在11:00精确发送电子邮件。
答案 0 :(得分:2)
您可以使用whenever gem执行此任务。它为编写和部署cron作业提供了清晰的语法。
安装此gem或添加gemfile。转到项目目录并运行whenevrize .
。
$ cd /apps/my-great-project
$ wheneverize .
它会在您的项目中创建一个config/schedule.rb
文件。现在,您可以在此文件中添加任务,宝石将处理所有事情。
对于你的情况,它看起来像这样。
every :weekday, at: '11:00 am' do
runner "MyModel.task_to_run_at_eleven_in_the_morning_on_weekdays"
end
答案 1 :(得分:1)
我建议你使用Sidekiq和Sidekiq-cron这个宝石可以在高负荷项目上工作,有Sidekiq UI(来自Sidekiq),你可以从Sidekiq UI端观察并重新启动你的工作。
Sidekiq更灵活,更有用,可以兼顾并发,拥有特权等队列(Sidekiq的所有优点)