Run Delayed Jobs and Sidekiq at the same time

后端 未结 3 1382
说谎
说谎 2020-12-31 06:24

I currently use delayed job to process jobs asynchronously. Instead of creating workers, I use the .delay method a lot.

I want to move to Sidekiq, but I

相关标签:
3条回答
  • 2020-12-31 06:42

    For Sidekiq 2.17.1 and later, somewhere in the Rails initializers, call the following:

    Sidekiq.hook_rails!
    Sidekiq.remove_delay!
    

    and you will have only prefixed sidekiq_delay methods and so on.

    (official document)


    For older versions of Sidekiq:

    Put the following in config/initializers/sidekiq.rb

    module Sidekiq::Extensions::Klass
      alias :sidekiq_delay :delay
      remove_method :delay
      alias :sidekiq_delay_for :delay_for
      remove_method :delay_for
      alias :sidekiq_delay_until :delay_until
      remove_method :delay_until
    end
    
    module Sidekiq::Extensions::ActiveRecord
      alias :sidekiq_delay :delay
      remove_method :delay
      alias :sidekiq_delay_for :delay_for
      remove_method :delay_for
      alias :sidekiq_delay_until :delay_until
      remove_method :delay_until
    end
    
    module Sidekiq::Extensions::ActionMailer
      alias :sidekiq_delay :delay
      remove_method :delay
      alias :sidekiq_delay_for :delay_for
      remove_method :delay_for
      alias :sidekiq_delay_until :delay_until
      remove_method :delay_until
    end
    

    And then you can use sidekiq_delay to queue in Sidekiq, and call delay to queue in Delayed Job.

    0 讨论(0)
  • 2020-12-31 06:48

    For anyone searching for this. I did find Sidekiq now has a setting for this out of the box. All you need to do is add Sidekiq.remove_delay! to config/initializers/sidekiq.rb

    This is described here: https://github.com/mperham/sidekiq/wiki/Delayed-Extensions

    0 讨论(0)
  • 2020-12-31 06:49

    It seems that Sidekiq has mix-in that adds .delay methods to all classes. Not 100% sure how this will behave but it could result in problems if delay you are refering to is on the instance level.

    My advice would be to add sidekiq library per job until you have moved all you jobs to it. Meaning to avoid including both libraries at the same time, again if possible.

    0 讨论(0)
提交回复
热议问题