Должны ли электронные письма с подтверждением обрабатываться в фоновом режиме?

#ruby-on-rails #backgroundworker #delayed-job #resque

#ruby-on-rails #backgroundworker #отложенное задание #resque

Вопрос:

Должны ли электронные письма с подтверждением обрабатываться / отправляться в фоновом режиме с использованием какого-либо фонового задания (Resque, Delayed_Job и т.д.)?

Приложение имеет тенденцию зависать, пока не будет отправлено электронное письмо с подтверждением. Однако это зависает всего на долю секунды или две. Не знаю, стоит ли отправлять его в качестве фоновой задачи.

Что вы думаете?

Комментарии:

1. Мне никогда не нужно этого делать, поскольку я не испытываю большой задержки при отправке электронных писем. Нет ничего плохого в добавлении его в фоновый процессор, поскольку пользователю не нужно получать электронное письмо мгновенно. Если задержка в регистрационной форме составляет всего пару секунд, это может быть излишним. Какова ваша производительность при отключении электронной почты?

2. Что вы имеете в виду, когда я отключаю электронную почту? Вы имеете в виду отключение отправки электронных писем с подтверждением? Кстати, наше приложение еще не запущено, поэтому реальную статистику я не могу точно назвать atm. Я просто замечаю, что приложение зависает на долю или две секунды при отправке электронного письма с подтверждением.

Ответ №1:

Главное, что следует иметь в виду, это то, что эта задержка влияет не только на текущего пользователя, но и на других пользователей, поскольку задерживает процесс Rails (точные последствия этого будут зависеть от используемого вами веб-сервера и ваших настроек).

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

Ответ №2:

Если это займет несколько секунд, я думаю, вы сможете с этим смириться. Но если это займет больше времени, вы можете переместить его в delayed_job, если только ваше delayed_job всегда не забито и вы слишком много работаете в фоновом режиме. В этом случае отправка электронной почты пользователю может занять немного больше времени и может испортить пользовательский интерфейс. Даже в этом случае вы могли бы установить более высокий приоритет для отправки электронных писем с подтверждением.

Я не сомневаюсь в возможностях delayed_job и лично использую его уже довольно давно. Даже Github рекомендует это при выпуске resque:
https://github.com/blog/542-introducing-resque

We need a background job system as serious as our web framework. I highly recommend DelayedJob to anyone whose site is not 50% background work.