Зачем после ajax запроса ставить celery?
Объясните пожалуйста, читаю статью https://habr.com/ru/company/otus/blog/503380/ там выполняется ajax запрос и после на сервере его ловит django и отправляет в celery.
Вроде бы ajax и так асинхронный и у клиента ничего не зависнет в ожидании, поидеи если не будет celery то весь процесс тоже будет асинхронный?
Объясните зачем ставить еще и celery?
У этого есть несколько причин.
Во-первых, у приложения, обрабатывающего веб запросы часто ограниченое количество процессов или потоков отвечающих за обработку запросов. Если обработка какого-то запроса занимает существенное время и одновременно придет их определенное количество - то все процессы/потоки будут заняты и новые запросы вообще не будут обрабатываться.
При использовании celery количество рабочих процессов для этих фоновых задач настраивается отдельно (а значит и может отдельно масштабироваться) от веб сервера.
Вторая причина - это возможность перезапустить обработку, которая прервалась по той или иной причине. Если у вас запрос обрабатывается непостредственно рабочим процессом веб сервера, то сбой потребует чтоб клиент заново повторил тот же запрос. Если же используется решение типа celery, то повтор может быть сделан автоматически, без участия клиента. celery хранит очередь задач и при правильной настройке обработки задач (грубо говоря удаляем задачу из очереди после полной обработки), эта очередь может быть использована для автоматического повтора.