【问题标题】:Should jobs within jobs use perform_later or perform作业中的作业应该使用 perform_later 还是 perform
【发布时间】:2016-12-12 20:42:04
【问题描述】:

我正在调用ExampleJob.perform_later 进行操作。该作业依次调用另外两个作业(见下文)。

这些也应该有perform_laterperform的方法还是没关系?

class ExampleJob < ApplicationJob
  queue_as :default

  def perform(*args)
    Example2Job.perform_later
    Example3Job.perform_later
  end
end

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5 rails-activejob


    【解决方案1】:

    如果您希望您的作业异步执行,您应该使用perform_later。否则你可以使用Job.new.performJob.perform_now

    【讨论】:

    • 那么尽管封装作业有perform_later,但两个嵌套作业将胜过它并且作业将同步运行?
    • 不,不。封装作业将异步运行,问题是您是否希望嵌套作业与封装作业在同一线程/进程中内联执行,或者您希望它们单独运行
    • 好的,我明白了。所以perform_later 听起来是最值得推荐的。
    • 是的,除非 Example3Job 依赖于 Example2Job 的结果
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 2012-10-20
    • 1970-01-01
    • 2011-04-11
    • 2010-09-09
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多