2013-05-23 2 views
1

моя проблема в том, что планировщик бит не хранит записи в таблицах «задачи» и «рабочие». Я использую джанго и сельдерей. в моей базе данных (MySQL) я добавил периодический «Оценка региона» с интервалом 120 секунд.django and celery beat scheduler нет записей в базе данных

это, как я начинаю свой рабочий:

`python manage.py celery worker -n worker.node1 -B --loglevel=info &` 

после того, как я начал работника я могу видеть в терминале, который работает работник и планировщик выбирает периодическую задачу из базы данных и эксплуатирует его.

как моя задача определена:

@celery.task(name='fv.tasks.estimateRegion', 
      ignore_result=True, 
      max_retries=3) 
def estimateRegion(region): 

терминал показывает это:

WARNING ModelEntry: Estimate Region fv.tasks.estimateRegion(*['ASIA'], **{}) {<freq: 2.00 minutes>} 
[2013-05-23 10:48:19,166: WARNING/MainProcess] <ModelEntry: Estimate Region fv.tasks.estimateRegion(*['ASIA'], **{}) {<freq: 2.00 minutes>}> 
INFO Calculating estimators for exchange:Bombay Stock Exchange 

задача «оценить область» возвращает мне файл results.csv, так что я могу видеть, что рабочий и работает планировщик бит. Но после этого у меня нет записей базы данных в «задачах» или «рабочих» в моей панели администратора django.

Вот мои настройки сельдерей в settings.py

`CELERY_DISABLE_RATE_LIMITS = True CELERY_TASK_SERIALIZER = 'рассол' CELERY_RESULT_SERIALIZER = 'маринованные' CELERY_IMPORTS = ('') fv.tasks CELERY_RESULT_PERSISTENT = True

# amqp settings 
BROKER_URL = 'amqp://fv:[email protected]' 
#BROKER_URL = 'amqp://fv:[email protected]' 
CELERY_RESULT_BACKEND = 'amqp' 
CELERY_TASK_RESULT_EXPIRES = 18000 
CELERY_ROUTES = (fv.routers.TaskRouter(),) 
_estimatorExchange = Exchange('estimator') 
CELERY_QUEUES = (
    Queue('celery', Exchange('celery'), routing_key='celery'), 
    Queue('estimator', _estimatorExchange, routing_key='estimator'), 
) 

# beat scheduler settings 
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler" 

# development settings 
CELERY_RESULT_PERSISTENT = False 
CELERY_DEFAULT_DELIVERY_MODE = 'transient'` 

Я надеюсь, что кто-нибудь может мне помочь :)

ответ

4

Вы начали celerycam?

python manage.py celerycam 

Выполнение моментального снимка (каждые 1 секунду по умолчанию) текущего состояния задач.

Вы можете прочитать об этом в celery documentation

+0

Великий, первый я думал, -B вариант также позволяет celerycam. Спасибо :) – user2412771

+0

Нет проблем! Если это решение вашей проблемы, пожалуйста, отметьте ее как принятый ответ, чтобы помочь другим, у кого такая же проблема в будущем. – Hodson

Смежные вопросы