【问题标题】:How to cancel a scheduled job in sidekiq. How to fetch jid of a scheduled job from my code?如何取消 sidekiq 中的预定作业。如何从我的代码中获取计划作业的 jid?
【发布时间】:2022-02-07 22:49:51
【问题描述】:

job = HardWorker.perform_in(2.minutes, arg1, arg2)

j_id = Sidekiq::ScheduledSet.new.find { |job_id| job.job_id }.item["jid"]

我收到以下错误: NoMethodError:“6512497a4359600501f63038”的未定义方法“job_id”:字符串

获取作业 ID 和删除计划作业的正确方法是什么?

【问题讨论】:

    标签: ruby-on-rails sidekiq


    【解决方案1】:

    From Sidekiq wiki FAQ

    如何取消 Sidekiq 作业?

    Sidekiq 不提供此功能;应用程序这样做更安全,更好。你应该实现这样的东西:

    class MyWorker
      include Sidekiq::Worker
    
      def perform(args)
        return if cancelled?
        # do stuff
      end
    
      def cancelled?
        Sidekiq.redis {|c| c.exists("cancelled-#{jid}") } # Use c.exists? on Redis >= 4.2.0
      end
    
      def self.cancel!(jid)
        Sidekiq.redis {|c| c.setex("cancelled-#{jid}", 86400, 1) }
      end
    end
    

    【讨论】:

    • 我试过这个。似乎没有取消工作。我仍然在仪表板上看到它。不确定我错过了什么
    猜你喜欢
    • 2014-08-02
    • 1970-01-01
    • 2013-04-07
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多