【问题标题】:Uninitialized constant error with Sidekiq and RailsSidekiq 和 Rails 的未初始化常量错误
【发布时间】: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


    【解决方案1】:

    好的。根据这里的建议,我似乎通过在 redis 上向 sidekiq 添加命名空间解决了这个问题:https://github.com/mperham/sidekiq/issues/2834

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多