Соответственно обновилась и библиотека django-celery, упрощающая работу с celery. В новой версии произошло существенное изменение: произошел переход с библиотеки carrot на kombu. Как пишут в релизе, kombu дает следующее:
Переход на kombu в том числе значит, что библиотека ghettoq больше не нужна для работы с Redis. Все уже есть в самом celery.
Если коротко, то это библитека организации асинхронной очереди задач или работ. Основной упор на задачи, выполняющиеся в реальном времени (асинхронно), но планировщик выполнения задач так же поддерживается. Читать описание дальше...
Очень удобно работать с celery через библиотеку django-celery. Ставим через pip + библиотеку работы с redis:
pip install django-celery pip install redis
Заодно поставиться и celery и все нужные библиотеки. Останется только поставить Redis. Настройка проста, в settings.py нужно сделать всего две вещи: в INSTALLED_APPS добавляем "djcelery" и для работы через Redis добавляем следующий код:
import djcelery djcelery.setup_loader() BROKER_BACKEND = "redis" BROKER_HOST = "localhost" BROKER_PORT = 6379 BROKER_VHOST = "0"
Для асинхронных задач: В папке приложения в проекте джанго создайте файл tasks.py. Задачи в таком файле будут автоматоматически распознаны celery при запуске. Пример задачи в файле tasks.py:
from celery.decorators import task @task() def send_email(from, to, subject, body): # send email...
Запускаем celery из папки проекта НЕ в демон режиме:
python manage.py celeryd -l info
В коде, такую задачу вызываем простой командой:
send_email.delay(from, to, subject, body)
| Mighty - 10.02.2011 |
Пока к сожалению есть проблемы с очень нужным функционалом, не доступным в 2.1: loaders/apps. |
| Zubchick - 10.02.2011 |
Я использую с rabbitmq, стоит обновляться или что-то может отвалиться? |
| Толик Востряков - 10.02.2011 |
Вообще, rabbitmq - рекомендуемый способ работы. В новой версии думаю для вас будет мало преимуществ, если все уже написано и работает. |