При количестве используемых веркеров больше одного, задача может отработать несколько раз. Порой такое поведение не нужно. И для такого случая Celery даже предлагает решение.
19 сентября 2014 г.
5 сентября 2014 г.
Основы Celery для Django
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVim26lwF7bHmYzseM7W54oUKyFE1fNc8LQZccZZNtm7tABHAMsBw1i9XcYPeWkxGb5IPEGeETqyqMFKZbT9rT5ls-qrlpnPHU88lyVYkl3N4Ht_AiYLrZ5VWdH2OBfGrHsJTGygiYJoc/s1600/splash.png)
При создании некоторых web-приложений порой требуется выполнять задачи асинхронно запросу пользователя или периодически.
К первым можно, например, отнести отправку уведомлений по электронной почте. В этом случае невозможно гарантировать быструю обработку запроса. Поэтому отправку уведомления можно поместить в параллельный поток и запрос не будет зависеть от скорости этой самой отправки.
Ко вторым относятся задачи, обычно размещаемые в cron
.
И здесь на помощь как раз может придти система типа Celery — асинхронная очередь задач, основанная на передаче сообщений. Надо сказать, что Celery можно и нужно использовать не только в web-приложениях. Но здесь я расскажу о ней применительно к популярному web-фреймверку Django. Еще стоит оговориться, что я раскрою лишь малую часть системы Celery (достаточную для использования в Django), потому как её возможности достаточно велики.