【发布时间】:2020-05-06 23:35:30
【问题描述】:
我最近收到一大堆未初始化的常量错误,我不知道为什么。下面是一个具体的例子。在此示例中,我从作业中调用作业。但是我的许多其他工作都会遇到类似的未初始化的常量错误。所有工作都在 app/jobs 中。我错过了什么吗?直到最近,Sidekiq 一直运行良好。
我已经清除了我的 Heroku 缓存并终止了 Sidekiq 中的所有重试,但我仍然遇到这些问题。这里有一些非常奇怪的东西。由于另一个错误,我与 sidekiq 工作相关,我得到“参数数量错误(给定 2,预期为 1)”。我在几周前更新了有问题的函数以接收两个参数。 Sidekiq 是否有可能以某种方式卡在代码库的缓存版本上?
Ruby 版本:ruby 2.5.3p105 Sidekiq 版本:6.0.7
app/jobs/process_email_notifications_job.rb
class ProcessEmailNotificationsJob < ApplicationJob
queue_as :default
def perform
user_ids = UserNotification.where(is_read: false).pluck(:user_id).uniq
user_ids.each do |user_id|
ProcessIndividualEmailNotificationsJob.perform_later user_id
end
end
end
app/jobs/process_individual_email_notifications_job.rb
class ProcessIndividualEmailNotificationsJob < ApplicationJob
queue_as :default
def perform(user_id)
...
end
end
错误信息:
2020-05-06T20:07:45.720Z pid=56028 tid=owp0sdcm8 DEBUG: enqueued retry: {"retry":true,"queue":"production_default","class":"ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper","wrapped":"ProcessIndividualEmailNotificationsJob","args":[{"job_class":"ProcessIndividualEmailNotificationsJob","job_id":"4b31bc4f-d034-4190-b24f-d0464cf81df0","provider_job_id":null,"queue_name":"production_default","priority":null,"arguments":[988],"executions":0,"locale":"en"}],"jid":"0ecc861f5870a7b9a70f176f","creat
4:07:45 PM sidekiq.1 | > ed_at":1588794273.2726498,"enqueued_at":1588795006.4009435,"error_message":"uninitialized constant ProcessIndividualEmailNotificationsJob\nDid you mean? ProcessEmailNotificationsJob","error_class":"NameError","failed_at":1588794279.9911764,"retry_count":5,"retried_at":1588795006.763224}
初始化器:
require 'sidekiq'
require 'sidekiq/web'
Sidekiq.configure_client do |config|
config.redis = { :size => 5 }
end
Sidekiq.configure_server do |config|
config.redis = { :size => 25 }
end
Sidekiq::Web.set :sessions, false
sidekiq.yml
:concurrency: 18
development:
:verbose: true
:queues:
- [development_priority, 2]
- development_default
- development_mailers
staging:
:queues:
- [staging_priority, 2]
- staging_default
- staging_mailers
production:
:queues:
- [production_priority, 2]
- production_default
- production_mailers
【问题讨论】:
标签: ruby-on-rails ruby sidekiq