我们正在推出一款带有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
答案 0 :(得分:2)
在添加Google-fu后,我发现问题已经报告
Sidekiq worker not getting triggered - 如果你来这里是为了同样的问题,请提出这个问题并回答。他们应该得到更多!
TL:DR - rspec-sidekiq gem应仅在测试中。显然这有点发展。
我现在将我的头靠在墙上,想知道为什么我的谷歌会让我连续两天失败。