Rails 5.2 и Sidekiq 5: Errno :: EADDRNOTAVAIL: Невозможно назначить запрошенный адрес - connect (2) для порта "localhost" 25 - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь доставить электронную почту с помощью 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. Любые идеи, что может быть не так.?

Обновление Кроме того, электронные письма не доставляются в Production, где моя конфигурация выглядит следующим образом:

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
}

1 Ответ

0 голосов
/ 22 мая 2019

Поскольку ваши электронные письма отправляются правильно с использованием метода #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
...