【问题标题】:Can delayed_jobs create delayed_jobs?delay_jobs 可以创建delayed_jobs 吗?
【发布时间】:2010-01-26 05:14:46
【问题描述】:

我想知道我是否可以使用delayed_job。我需要能够在 delayed_job perform 方法中将作业添加到队列中。这可能吗?

【问题讨论】:

    标签: ruby-on-rails delayed-job


    【解决方案1】:

    根据我的测试,他们可以:

    型号Machine:

    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
    

    从控制台:

    延迟::Job.enqueue Machine.create!

    这最终会创建一个 Proof 的实例并记录“Inside secondary's...”。

    【讨论】:

    • 我的延迟工作也可以很好地启动另一个延迟工作作为其操作的一部分。
    • 是的,他们绝对可以。在某些情况下,像这样“链接”作业很有用,但大多数情况下,您可以只拥有一个作业来转换模型的状态,以便可以在其当前位置重新启动作业如果失败则工作流。
    【解决方案2】:

    我在send_later 调用的方法中调用send_later 的简单测试表明,它将不起作用。

    【讨论】:

    • 也许只是send_later 不允许这样做。我在脚本/控制台中测试过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 2021-09-14
    相关资源
    最近更新 更多