我正在尝试使用Sidekiq和h3
发送电子邮件。
在我的deliver_later
中,我有:
config/sidekiq.yml
在我的工人中,我尝试使用以下方法:
:verbose: true
:concurrency: 25
:queues:
- [mailers, 7]
- [critical, 6]
- [default, 5]
- [low, 4]
我在Sidekiq管理面板中看到我的邮件工作被卡在“重试”中,并出现以下错误:
Buyer::OffersMailer.instant_for_published_offer(info_to_deliver).deliver_later
我的应用程序可以发送Errno::EADDRNOTAVAIL: Cannot assign requested address - connect(2) for "localhost" port 25
电子邮件,我相信这会拒绝SMPTP可能有问题的假设。任何想法,有什么问题吗?
更新 此外,电子邮件未在生产环境中交付,我的配置如下所示:
deliver_now
答案 0 :(得分:0)
由于使用#deliver_now
方法正确发送了电子邮件,因此这意味着您的Mailer配置很好。现在,除了此以外,您还应该在application.rb
配置文件中添加它:
config.active_job.queue_adapter = :sidekiq
,在config\initializers\sidekiq.rb
中,需要配置Redis URL:
Sidekiq.configure_server do |config|
config.redis = { url: (ENV["REDIS_URL"] || 'redis://localhost:6379/0') }
end
Sidekiq.configure_client do |config|
config.redis = { url: (ENV["REDIS_URL"] || 'redis://localhost:6379/0') }
end
答案 1 :(得分:0)
生产中的错误是由于Procfile中的环境设置引起的。在我看来,Sidekiq docs截止RAILS_ENV=production
所以我的工作procfile看起来像这样:
main_worker: bundle exec sidekiq RAILS_ENV=production