我正在将 Rails 应用程序从 Rails 4.2 / ruby 2.2.2 迁移到 Rails 5 / ruby 2.4。我遇到的大多数“问题”都很容易解决,但这个问题让我有点难过。
我通过 Redis / Sidekiq / Sidetiq 向工作人员发送了许多经常性工作。它过去工作得很好。现在,当我启动 Sidekiq 时,我的重复性工作似乎没有被“加载”,所以基本上它们没有排队或执行。这曾经在我启动 Sidekiq 后自动发生,但也许我现在需要先显式实例化这些工作类?如果我手动执行和延迟(例如,perform_in 1 秒)一个循环工作者类,那么这个类将开始按照它应该的循环计划执行。在我手动执行这个“perform_in 1 seconds”作业后,我确实在 Sidekiq 中出现了错误,但不觉得这是问题所在:
/.rvm/gems/ruby-2.4.0@rails5.0/gems/ice_cube-0.14.0/lib/ice_cube/validations/minute_of_hour.rb:7:警告:常量 ::Fixnum 已弃用
/.rvm/gems/ruby-2.4.0@rails5.0/gems/ice_cube-0.14.0/lib/ice_cube/validations/hour_of_day.rb:8:警告:常量 ::Fixnum 已弃用
/.rvm/gems/ruby-2.4.0@rails5.0/gems/ice_cube-0.14.0/lib/ice_cube/validations/day.rb:9:警告:常量 ::Fixnum 已弃用
这是我的经常性工作课程的样子:
class RecurringWorker
include Sidekiq::Worker
include Sidetiq::Schedulable
recurrence do
weekly.minute_of_hour(0, 15, 30, 45).hour_of_day(10, 11, 12, 13, 14, 15, 16, 17).day(1, 2, 3, 4, 5)
end
def perform
# Some Code
end
end
我的初始化程序:
Sidetiq.configure do |config|
# Clock resolution in seconds (default: 1).
config.resolution = 1
# Clock locking key expiration in ms (default: 1000).
config.lock_expire = 100
# When `true` uses UTC instead of local times (default: false).
config.utc = false
# Scheduling handler pool size (default: number of CPUs as
# determined by Celluloid).
config.handler_pool_size = 5
# History stored for each worker (default: 50).
config.worker_history = 50
end
所有 gem 依赖项似乎都安装了最新版本。