我当前使用延迟作业异步处理作业。我经常使用.delay
方法,而不是创建工人。
我想转到sidekiq,但我有太多类型的作业,无法确保所有作业都是线程安全的。所以我想并行运行延迟作业和sidekiq,并一次迁移一种类型的作业。
既然delayed job和sidekiq都提供了.delay
方法,我如何区分两者呢?还有其他潜在的问题吗?
最佳答案
对于sidekiq 2.17.1和更高版本,在rails初始化器中的某个地方,调用以下命令:
Sidekiq.hook_rails!
Sidekiq.remove_delay!
您将只有前缀
sidekiq_delay
方法等等。(official document)
对于旧版本的sidekiq:
在
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
然后可以使用
sidekiq_delay
在sidekiq中排队,并调用delay
在延迟作业中排队。关于ruby - 同时运行延迟的作业和Sidekiq,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13306215/