2022-09-12 16:32:22
Celery (сельдерей)Что такое Celery?Библиотека для Python, позволяющая выполнять асинхронные и периодические задачи.
Мой опыт с сельдереем Познакомился я с ним на первом же проекте, где он как раз и использовался для обработки долгих задачек в "фоне" и для периодических задач (отправлять группе пользователей нужное уведомление раз в неделю). Дальше уже нужно было конфигурировать его, делать повторные исполнения задач в случае ошибок, выстраивать пайплайны из задач и тд.
И вроде все ок, задачки асинхронно и периодически выполняются, но мне захотелось узнать поглубже, как все это работает.
Условно говоря, что конкретно происходит, когда я пишу some_task.delay()? Задача попадает в очередь, а как она туда попадает, а в какую конкретно очередь попадает, а как потом исполняется, а какой worker ее исполняет, а в этот момент создается поток или процесс? В общем, начал гуглить. В документации все очень разрозненно, находится в разных местах -- где-то в тексте, где-то приходится ковырять исходный код. В статьях только общие слова типа "
ну вот есть celery, есть брокер сообщений redis, задачки туда отправляются, потом оттуда берутся и исполняются". И потом, что больше всего меня бесило, все хотят показать, как поднять Celery в Django. И так в большинстве статей, пока я не наткнулся на пост
Пост Ines Panker
Я нашел священный грааль среди всех этих статей и гайдов. Это пост Ines Panker на ее личном сайте. В ней она и ответила на большинство моих вопросов, уменьшив энтропию незнания.
Ну а я решил уменьшить ее и для остальных разработчиков. Перевод этой прекрасной статьи ниже, велком!
https://habr.com/ru/post/686820/
1.2K viewsedited 13:32