![](/img/trans.png)
[英]Cannot assign requested address - bind(2) (Errno::EADDRNOTAVAIL)
[英]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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.