繁体   English   中英

如何在Rails ActiveJob中创建日常工作(类似cron)?

[英]How to create a daily job (cron-like) in Rails ActiveJob?

我知道这个帖子: rails的cron工作:最佳实践? ,但没有提到ActiveJob。 我使用ActiveJob做的动机是因为它内置在Rails中,这里是它的文档的摘录:

“这些工作可以是定期清理,计费和邮寄等所有工作。”

如何在Rails ActiveJob中创建日常工作(类似cron)? 由于我没有看到在其文档中运行定期计划作业的示例。

或者我应该坚持whenever宝石?

坚持whenever宝石或类似的宝石,例如chronoclockworkrufus-scheduler

您在ActiveJob文档中阅读的内容有点令人困惑,因为看起来好像ActiveJob可以处理定期调度的责任。 文档应该说恕我直言,工作是由其他一些系统或工具定期安排的。

那么,ActiveJob是关于排队的工作?

是的,它是关于Rails提供标准接口,用于将作业添加到队列,并调用perform方法。 ActiveJob提供了方法接口,可以为许多作业处理队列,后端,直接运行程序等启用适配器。

它对我有用:

every 1.day, at: '9:36 am' do
  runner 'SomeJob.perform_later'
end

我使用的wheneverActiveJob

如果你不想添加一个cron作业,可以在作业结束时调用第一次执行后1天重复相同的工作

class SomeJob < ApplicationJob      
   def perform(*args) 
     #execution here...
     SomeJob.set(wait_until: Time.now + 1.day).perform_later(...)
   end
end

我知道这不是一个好的实践

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM