2017-02-17 8 views
0

Я использовал this instructions и отправил почту «Добро пожаловать» зарегистрированному пользователю. Но это заставляет пользователя ждать 5-8 секунд, потому что сервер пытается завершить эту почту.Внешний веб-сервис для отправки фоновых писем в рельсах

Я не хочу, чтобы пользователь дождался отправки почты, но сразу же увидит сообщение «Отправлено письмо». Таким образом, это приносит мне фоновые задания в Rails. Есть много вариантов, таких как delayed_job, Resque и т. Д. Для фоновых заданий в Rails. Но для использования такого рода решения, как я понимаю:

1- Создать фоновое задание 2 Выполнить эту работу

Допустим, я использовал одно из решений фоновых заданий, так что потом мне нужно что-то еще бегите также эту работу, как cron job ...

Я думаю, что для отправки сообщений электронной почты и отправки напоминаний по электронной почте должно быть возможно еще одно более легкое решение. Я имею в виду, как другую внешнюю службу, что я создам шаблон для каждого типа почты, которую я вышлю, 2- я передам некоторые аргументы, такие как имя_пользователя, имя_файла, имя_пользователя, пароль_связь и т. Д. ... Таким образом, я не потребуется никакой фоновой работы, и пользователь не будет ждать.

Я наткнулся на какой-то другой драгоценный камень под названием «sucher_punch», но, как я понимаю из сообщений людей и размещенных проблем, с использованием героку, этот камень может потерпеть неудачу по каким-то причинам из героинских динамиков, и почта не может быть отправлена, а вы не знаю.

В любом случае, каков общий способ, с помощью которого разработчики рельсов справляются с этой проблемой электронной почты? Может быть, я также могу использовать sendgrid, как я объяснил выше, не так ли?

+0

Hi Enis. Если вы чувствуете, что ответ помог вам выполнить то, что вы намеревались, подумайте о его принятии. благодаря –

ответ

0

Отправка электронной почты в фоновом режиме является таким распространенным случаем, Rails 4.2 представил метод #deliver_later в ActionMailer, чтобы обеспечить бесшовную интеграцию ActiveJob.

Вам не нужно настраивать задание cron, чтобы проверить, есть ли какие-либо задания в фоновом режиме. Sidekiq, Resque или DelayedJob позаботятся об этом для вас.

Кажется, что Sendgrid разрешает creating templates и отправляет содержимое переменной, чтобы заполнить их, но эта функция не подрывает преимущества асинхронного вызова. Фактически, откладывание его на задний план также имеет дополнительное преимущество, не нарушая работу пользователя, если внешний ресурс (Sendgrid) недоступен.

Вам необходимо попробовать установить один из предложенных вами вариантов обработки фоновой обработки (я рекомендую sidekiq) и воспользоваться преимуществами ActionMailer + ActiveJob integration.

Смежные вопросы