Сельдерей асинхронные задачи в проекте Django. Как это устроено? - PullRequest
0 голосов
/ 18 июня 2011

Мне нужно, чтобы в моем проекте django выполнялись длинные задачи. Решил использовать сельдерей с редисом в качестве брокера. Установленный Redis работает:

Сервер теперь готов принимать соединения через порт 6379

Чем я устанавливаю django-celery, настраиваю:

import djcelery
djcelery.setup_loader()
BROKER_HOST = "localhost"
BROKER_PORT = 6379 #redis
BROKER_USER = "guest"
BROKER_PASSWORD = "guest"
BROKER_VHOST = "/"

и запустите его:

python manage.py celeryd -l DEBUG
[...]
[2011-06-18 10:31:37,913: DEBUG/MainProcess] Starting thread Timer...
[2011-06-18 10:31:37,914: DEBUG/MainProcess] Starting thread Consumer... 
[2011-06-18 10:31:37,914: WARNING/MainProcess] celery@greg... has started.
[2011-06-18 10:31:37,914: DEBUG/MainProcess] Consumer: Re-establishing connection to the broker...

мой пример задачи выглядит так:

from celery.decorators import task
@task()
def add(x, y):
    return x + y

сейчас я пытаюсь запустить его в оболочке:

In [3]: from message.tasks import add
In [4]: r=add.delay(2, 5)    

это очень долго и рендеринг Traceback http://dpaste.com/555939/. Что это может быть? Может я что-то пропустил?

Ответы [ 2 ]

2 голосов
/ 19 июня 2011

Параметр BROKER_BACKEND отсутствует. Вот пример конфигурации для использования Redis:

import djcelery
djcelery.setup_loader()

CELERY_RESULT_BACKEND = 'database'

BROKER_BACKEND = 'redis'
BROKER_HOST = 'localhost'
BROKER_PORT = 6379
BROKER_VHOST = '1'
0 голосов
/ 18 июня 2011

Не знаю, что это такое, но я знаю, что RabbitMQ - рекомендуемый брокер для Celery и Django.У меня это работает, и это работает как шарм.Почему бы не попробовать?

...