延迟作业能否创建延迟作业?

3

我正在尝试确定是否能够使用delayed_job。我需要在delayed_jobperform方法中添加作业到队列的能力。这是可能的吗?

2个回答

2
根据我的测试,它们可以:
建模机器:
class Machine < ActiveRecord::Base
  def perform
    Delayed::Job.enqueue Secondary.create!
  end
end

模型 Secondary

class Secondary < ActiveRecord::Base
  def perform
    logger.info("Inside secondary's perform method (WIN)")
    Proof.create!
  end
end

从控制台输入以下命令:

Delayed::Job.enqueue Machine.create!

这将创建一个 Proof 实例并记录 "Inside secondary's..."。


注意:请保留HTML标签,已翻译为最通俗易懂的表达方式。

我的延迟作业在其操作的一部分中也能很好地启动另一个延迟作业。 - Larry K
是的,它们绝对可以。有些情况下,像这样“链接”作业是很有用的,但大多数情况下,您只需拥有一个单一作业,该作业在进行过程中转换模型的状态,以便如果它失败,则可以在其工作流程的当前点重新启动作业。 - betamatt

-1

我的简单测试调用由send_later调用的方法中的send_later表明,不会起作用。


也许只有send_later不允许这样做。我在script/console中测试过了。 - Jonathan Julian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接