Должен ли я использовать rails5 activejob по умолчанию асинхронный адаптер для небольших фоновых заданий в производстве? - PullRequest
0 голосов
/ 06 октября 2018

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

Я попытался использовать ActiveJobs и асинхронный адаптер rails по умолчанию (Rails 5), и я вижу, что он работает в Heroku из коробки.Я продолжаю читать, что я должен использовать другой веб-процесс и, например, redis, но если фоновое задание должно быть просто выполнено сразу после выполнения запроса, и если просто выполняется запуск другого API снаружи, который может быть медленнее, это так плохо использоватьасинхронность по умолчанию?

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

1 Ответ

0 голосов
/ 12 декабря 2018

Я использую асинхронный адаптер в производстве для отправки электронных писем.Это очень маленькая работа.Отправка электронного письма может занять до 3 секунд.

В документе говорится, что он плохо подходит для работы, поскольку при перезапуске отбрасывает отложенные задания.Если я правильно помню, Heroku перезапускает динос один раз в день.

Если ваша работа ожидает перезапуска, работа будет потеряна.В моем случае ожидающее электронное письмо во время перезапуска довольно тонкое.Пока все хорошо.

Но если у вас есть задания, занимающие 30 секунд, я буду использовать Resque или DelayedJob.

...