Планирование писем с помощью Action Mailer на heroku - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь запланировать отправку электронного письма с задержкой после запуска действия. Я использую Action Mailer с функциональностью delivery_later:

UserMailer.email_form(params[:session][:email]).deliver_later(wait: 2.minute)

Он отлично работает локально и на heroku, за исключением случаев, когда я перезагружаю сервер / развертываю снова, когда электронное письмо запланировано, но не было отправлено. Как мне обойти это?

1 Ответ

0 голосов
/ 04 июля 2018

Я думаю, что проблема в следующем: deliver_later использует ActiveJob (часть / фреймворк Rails) для скрытой отправки электронных писем в фоновом режиме. Rails по умолчанию поставляется с реализацией асинхронной очереди, которая запускает задания с внутренним пулом потоков. Задания будут выполняться асинхронно, но любые задания в очереди будут сбрасываться при перезапуске или сбоях процесса, поскольку они находятся только в ОЗУ (памяти), но не в постоянном бэкэнде (БД, Redis).

Вам следует переключиться на другой адаптер (Sidekiq, Resque, Delayed Job, ...), если вы хотите, чтобы ваши задания сохранялись.

Вы можете найти подробнее здесь .

...