我们正在推出一个带有Sidekiq和Rails 5的新应用程序。我们正在利用Redis来存储作业,但出于某些原因,无论是在本地还是在我们的开发区域,作业似乎并没有传递到Redis。
当代码单独执行和通过IRB执行时,通知似乎被正确地发送了。
[10] pry(main)> Notifications::WelcomeWorker.perform_async(1)
=> "1a1447c488f173fb09b212f7"查看Redis,我们有失败和处理(都是0)的键,但对于挂起没有任何键,这让我相信它甚至没有因为某种原因而击中Redis。
我们的Redis配置是在config / sets kiq.yml中设置的,它只设置并发性和PID位置。
我们在初始化器/ file kiq.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 }
endSIDEKIQ_REDIS在本地转换为redis://localhost和dev上的相关URL。
一切看起来都很好,但是工作似乎并没有出现在Redis中。
在我的睡眠不足中有什么东西是我遗漏的吗?
工作人员本身安装在app/ worker /notifications/迎宾_worker.rb中。
在app/workers/notifications/迎宾_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发布于 2017-01-05 18:45:44
经过额外的Google-fu之后,我发现这个问题已经被报道了。
Sidekiq worker not getting triggered --如果你来这里是为了同样的问题,请提出这个问题并回答。他们应该得到更多!
TL:DR - rspec-sidekiq宝石应该只在测试中。很明显这和发展有关。
现在我要把头撞到墙上,想知道为什么我的google-fu连续两天都让我失望了。
https://stackoverflow.com/questions/41491887
复制相似问题