2012-08-01 7 views
0

Я установка kombu/celery, которую я недавно установил. Задачи выполняются отлично, но они работают почти непрерывно, а не уважают атрибут run_every. Возможно, более странно, это поведение появляется только в производстве и прекрасно работает на местном уровне.Сельдерей/Kombu игнорируя run_every

Мои tasks.py выглядит следующим образом:

from celery.task import PeriodicTask 
from datetime import timedelta, datetime 

class FirstTask(PeriodicTask): 
    run_every = timedelta(seconds = 30) 
    # Do Stuff  

Мои settings.py включает

BROKER_URL = "django://" 

import djcelery 
djcelery.setup_loader() 

плюс 'djcelery' и 'kombu.transport.django' в INSTALLED_APPS.

И в производстве я запускаю python manage.py celeryd -v 2 -B -s celery -E -l INFO, чтобы начать выполнение моих задач. Я следил за Chase Seibert's tutorial, если это очищает что-то еще.

ответ

1

Как долго требуется выполнить задачу? И попробовали ли вы очистить свою очередь, прежде чем повторять попытку (сельдерей может не уважать настройку run_every, если у вас уже есть задачи в вашей очереди ...)

+0

Ха-ха: «Очищено 5625 сообщений из 1 известной очереди задач». Вероятно, это имеет какое-то отношение к ней. Как они накапливаются? – Chris

+0

Вы пробовали его с разными интервалами или другим кодом раньше? Или задача слишком долго выполнялась? Кроме того, если у вас есть много других задач сельдерея, они могут задержать выполнение вашей периодической задачи (не принимайте интервал 'run_every' как должное!) –

0

Почему вы добавляете 'kombu.transport.django' в свой INSTALLED_APPS ..? Я думал, что сельдерей и комбу обеспечивают такую ​​же функциональность.