Блог Толика Вострякова

Живой опыт программирования, Python, Django, современные языки и немного фотографий
Блог - новые записи и ссылки (Atom)

Вышел новый celery 2.2: используем c redis -

Соответственно обновилась и библиотека django-celery, упрощающая работу с celery. В новой версии произошло существенное изменение: произошел переход с библиотеки carrot на kombu. Как пишут в релизе, kombu дает следующее:

Полный список изменений

Переход на kombu в том числе значит, что библиотека ghettoq больше не нужна для работы с Redis. Все уже есть в самом celery.

Что такое Celery?

Если коротко, то это библитека организации асинхронной очереди задач или работ. Основной упор на задачи, выполняющиеся в реальном времени (асинхронно), но планировщик выполнения задач так же поддерживается. Читать описание дальше...

Установка django-celery и настройка для работы с Redis.

Очень удобно работать с 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)

Читать дальше документацию

Комментарии: 3

Mighty - 10.02.2011 Пока к сожалению есть проблемы с очень нужным функционалом, не доступным в 2.1: loaders/apps.
Zubchick - 10.02.2011 Я использую с rabbitmq, стоит обновляться или что-то может отвалиться?
Толик Востряков - 10.02.2011 Вообще, rabbitmq - рекомендуемый способ работы. В новой версии думаю для вас будет мало преимуществ, если все уже написано и работает.

Добавить комментарий:


Буду использовать, только для связи с тобой

Чтобы и другие могли узнать о тебе

Вы можете использовать markdown разметку.

Например:
**жирный**
*курсив*
## Заголовок

Не используйте html-тэги. Все ссылки станут активными, все переводы строк будут заменены на <br>
captcha