使用DelayedJob
,可以实例化一个worker以编程方式完成作业:
Delayed::Worker.new.work_off # => [num_succesess, num_failures]
ActiveJob 是否提供任何接口(interface)来执行相同的操作?
最佳答案
目前没有,如果将来有计划的话?我不知道。 ActiveJob 目前仅提供用于创建新作业的接口(interface),并以非常有限的方式在后台执行它。
ActiveJob目前仅提供:
- 创建新作业并在后台进程中执行
- 指定必须使用的队列名称
- 能够重试作业(但您必须指定条件并计算再次处理之前应等待的时间)
- 通过队列发送电子邮件的良好界面
它没有提供:
- 任何好的 API 例如。计算迭代次数并以某种方式使用它(可能计划在下一个版本中使用,但它仍然是相当手动的 https://github.com/rails/rails/blob/master/activejob/lib/active_job/core.rb#L70 )
- 您也不能使用delayed_job https://github.com/collectiveidea/delayed_job#hooks中的任何钩子(Hook)方法
- 或在作业中指定任何delayed_job参数 https://github.com/collectiveidea/delayed_job#custom-jobs (例如
max_attempts
、max_run_time
等。
现在确实很有限,但我很感兴趣这个 gem 的去向以及它将如何演变。
希望这对您有所帮助。
关于ruby-on-rails - 以编程方式处理 ActiveJob 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29804025/