【问题标题】:Delayed Job: Configure run_at and max_attempts for a specific job延迟作业:为特定作业配置 run_at 和 max_attempts
【发布时间】:2013-04-20 01:35:10
【问题描述】:

我需要为一项特定的工作覆盖Delayed::Worker.max_attempts,我想重试很多次。另外,我不希望以指数方式确定下一个预定时间(来自文档:5 秒 + N ** 4,其中 N 是重试次数)。

我不想覆盖Delayed::Worker 设置,并影响其他工作。

我的工作已经是一个自定义工作(我以某种方式处理错误),所以这可能会有所帮助。有关如何执行此操作的任何指示?

【问题讨论】:

    标签: ruby-on-rails delayed-job


    【解决方案1】:

    我通过查看delayed_job 源代码发现了这一点。这在他们的文档中没有任何记录。

    这就是我所做的:

    class MyCustomJob < Struct.new(:param1, :param2)
      def perform
        # do something
      end
      
      # attempts and time params are required by delayed_job
      def reschedule_at(time, attempts)
        30.seconds.from_now
      end
    
      def max_attempts
        50
      end
    end
    

    然后使用enqueue 在任何你需要的地方运行它,像这样:

    Delayed::Job.enqueue( MyCustomJob.new( param1, param2 ) )
    

    希望这对将来的某人有所帮助。

    【讨论】:

    猜你喜欢
    • 2017-11-09
    • 2012-02-16
    • 2016-03-29
    • 2013-09-17
    • 2011-10-22
    • 2012-03-29
    • 2011-12-14
    • 2022-11-10
    • 2011-08-27
    相关资源
    最近更新 更多