ruby-on-rails - 使用自定义时间安排任务
问题描述
配置/时间表.rb
def timezoned time
Time.zone = "Pacific Time (US & Canada)"
Time.zone.parse(time).utc
end
every 1.day, at: timezoned('5:30 am') do
runner 'App1::Task1.perform_async'
end
every 1.day, at: timezoned('5:31 am') do
runner 'App1::Task2.perform_async'
end
every 1.day, at: timezoned('5:33 am') do
runner 'App2::Task1.perform_async'
end
every 1.day, at: timezoned('5:34 am') do
runner 'App2::Task2.perform_async'
end
every 1.day, at: timezoned('5:36 am') do
runner 'App3::Task1.perform_async'
end
every 1.day, at: timezoned('5:37 am') do
runner 'App3::Task2.perform_async'
end
every 1.day, at: timezoned('5:40 am') do
runner 'App4::Task1.perform_async'
end
every 1.day, at: timezoned('5:41 am') do
runner 'App4::Task2.perform_async'
end
every 1.day, at: timezoned('5:42 am') do
runner 'App4::Task3.perform_async'
end
every 1.day, at: timezoned('5:43 am') do
runner 'App5::Task4.perform_async'
end
我正在使用 Sidekiq 和任何时候 gem 来安排 Rails 中的作业。以上是我的 schedule.rb。有没有办法以比上述更好的方式安排任务?(例如时间 + 1.分钟或时间 + 2.分钟)
如果有任何更好的方法来安排上述任务,这将是有帮助的。
解决方案
选项1:
因为这是一个 Ruby 代码,您可以动态迭代应用程序、任务数组并动态设置调度程序
选项 2:您实际上可以让每个 :minute do runner 'AppTaskRunner.perform_async' end
在 AppTaskRunner 启动每个应用程序所需的任务取决于您的逻辑
推荐阅读
- c++ - Linux 承诺提供比它所能提供的更多的内存
- haskell - 在 Haskell 中 a : -> b 是什么意思?
- python - Pandas:时间列添加并重复所有行一个月
- algorithm - 创建点云的最小边界框组合的算法
- delphi - 有没有办法在 Delphi 中制作一个“子枚举”数组?
- python - 无需拼接图像的 OpenCV 曝光补偿
- python - 使用捕获的值作为行标识符
- angular - Mat-tab-group's [(selectedIndex)]=... binding is flaky
- powerbi - How to count different elements inside a column in power BI?
- vue.js - 可能需要一个合适的加载器来处理这种文件类型...发生在每个 vuetify 组件上