繁体   English   中英

Sidekiq 没有从 Rails 应用程序中获取工作

[英]Sidekiq not picking up job from Rails app

我们正在推出带有 Sidekiq 和 Rails 5 的新应用程序。我们正在利用 Redis 来存储作业,但由于某种原因,本地和我们的开发区的作业似乎没有传递到 Redis。

当代码自行执行以及通过 IRB 执行时,通知似乎已正确发送。

[10] pry(main)> Notifications::WelcomeWorker.perform_async(1)
=> "1a1447c488f173fb09b212f7"

查看 Redis,我们有失败和已处理的键(都说 0),但没有挂起的键,这让我相信它甚至没有因为某种原因击中 Redis。

我们的 Redis 配置在 config/sidekiq.yml 中设置,它只设置并发性和 PID 位置。

我们在 initializers/sidekiq.rb 中也有一个初始化文件

Sidekiq.configure_server do |config|
  config.redis = { url: ENV["SIDEKIQ_REDIS"] , namespace: 'abcbh', network_timeout: 5  }
end
Sidekiq.configure_client do |config|
  config.redis = { url: ENV["SIDEKIQ_REDIS"] , namespace: 'abcbh', network_timeout: 5  }
end

SIDEKIQ_REDIS 在本地转换为 redis://localhost 以及在 dev 上的相关 URL。

一切似乎都运行良好,但作业似乎没有出现在 Redis 中。

在我的睡眠剥夺中我缺少什么吗?

工人本身在 app/workers/notifications/welcome_worker.rb 中设置

在 app/workers/notifications/welcome_worker.rb 中,我们有以下代码,尽管它从未被执行。

require 'sendgrid-ruby'
include SendGrid
class Notifications::WelcomeWorker
  include Sidekiq::Worker

  sidekiq_retries_exhausted do |msg, e|
    Sidekiq.logger.warn "Failed #{msg['class']} with #{msg['args']}: #{msg['error_message']}"
  end

  def perform(email_id)
    Sidekiq.logger.info "Beginning Welcome Email For #{email_id}"
    ...
  end
end

在额外的 Google-fu 之后,我发现问题已经报告了

Sidekiq 工作人员没有被触发-如果您来这里是为了相同的问题,请对此问题进行投票并回答。 他们更值得拥有!

TL:DR - rspec-sidekiq gem 应该只在测试中。 显然,这与发展有关。

我现在将头撞在墙上,想知道为什么我的 google-fu 连续两天都失败了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM