Задать вопрос
@Andrei1penguin1

Зачем сохранять результаты в Celery?

Доброго времени суток, не совсем понимаю, зачем нужно сохранение результатов в Celery
Вот допустим нам нужно добавить пост на страницу, мы при получении ajax запроса поручаем эту задачу Celery и немедленно во вьюхе возвращаем httpresponse("")
После добавления публикации нам более ничего не нужно
Наверное мое непонимание вызвано тем, что собственно собой представляет результат задачи
Подскажите пожалуйста этот момент и зачем его нужно сохранять (или не нужно, что должно быть производительнее)
  • Вопрос задан
  • 192 просмотра
Подписаться 3 Простой Комментировать
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Ну, использовать Celery для добавления поста - это оверкилл. А вообще смысл в том, что обработчик http-запроса должен максимально быстро отвечать на запрос и завершать работу. Параллельность в Django, как и во многих других фреймворках, обеспечивается запуском нескольких процессов. Если обработчику запросов на ответ нужна например одна секунда и запущено три процесса, то сервис способен обрабатывать не больше трёх запросов в секунду. Если запросов будет в десять раз больше, то некоторым из них придётся десять секунд висеть на загрузке и может быть даже отвалиться по таймауту. Если же процессов запустить много, то будет высокий расход ресурсов сервера. Так что разумно всё, потенциально требующее больше 100 миллисекунд, засовывать в очередь для обработки в фоне.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AlexNest
@AlexNest
Работаю с Python/Django
Суть в том, что задачи в очереди выполняются асинхронно и не будут ломать логику, которая идет дальше, если что-то случится.
1. К примеру - на сайте регистрация происходит синхронно то, к примеру, если почтоввый сервис, с которого отправляются письма о регистрации ляжет то и вьюха, скорее всего, сломается (в целом, можно эксепшеном обработать как ошибку, но можно и так).
2. Почтовый сервис может долго думать и пока не отправит таки письмо, вьюха будет "висеть". Поэтому задачи, которые могут занять некоторое время (в том числе и запись в бд) также запускают асинхронно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы