繁体   English   中英

Rails 5.2 和 Sidekiq 5:Errno::EADDRNOTAVAIL:无法分配请求的地址 - connect(2) 用于“localhost”端口 25

[英]Rails 5.2 and Sidekiq 5: Errno::EADDRNOTAVAIL: Cannot assign requested address - connect(2) for "localhost" port 25

我正在尝试使用 Sidekiq 和deliver_later发送电子邮件。

在我的config/sidekiq.yml我有:

:verbose: true
:concurrency: 25
:queues:
  - [mailers, 7]
  - [critical, 6]
  - [default, 5]
  - [low, 4]

在我的工作人员中,我尝试这样做: Buyer::OffersMailer.instant_for_published_offer(info_to_deliver).deliver_later

我在 Sidekiq 管理面板中看到我的邮件程序工作卡在“重试”中,并出现以下错误:

Errno::EADDRNOTAVAIL: Cannot assign requested address - connect(2) for "localhost" port 25

我的应用程序可以发送deliver_now电子邮件,我相信这拒绝假设SMPTP 可能有问题任何想法,可能是什么问题?

更新此外,生产中不发送电子邮件,我的配置如下所示:

config.action_mailer.raise_delivery_errors = false
config.action_mailer.default_url_options = { host: "https://myapp.com" }
config.action_mailer.asset_host = "https://myapp.com"
config.action_mailer.perform_deliveries = true
config.action_mailer.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
  :address        => 'myval',
  :port           => '587',
  :authentication => :plain,
  :user_name      => 'myval',
  :password       => Rails.application.credentials.mailgun_smtp_pass,
  :enable_starttls_auto => true
}

由于您的电子邮件是使用#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

生产中的错误是由于 Procfile 中的环境设置造成的。 在我的案例中, Sidekiq 文档工作RAILS_ENV=production

所以我的工作 procfile 看起来像这样:

main_worker: bundle exec sidekiq RAILS_ENV=production

如果您使用HerokuDokku ,请不要忘记扩展您的工作人员。

暂无
暂无

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

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