Что я могу сделать, если сельдерей забывает о задачах на (по-видимому) случайной основе?

У меня есть фляжное приложение с sqlalchemy и рабочим сельдереем. Я использую Redis в качестве своего брокера. Каждый раз, когда кто-то отправляет новое сообщение в беседе, запускается рабочий процесс, который должен отправлять уведомления всем людям, участвующим в беседе. Таким образом, он подключается к базе данных и получает все соответствующие адреса электронной почты.

К сожалению, кажется, что существует случайный фактор, определяющий, знает ли сельдерей задачу, которая отправляет почту, или нет. После некоторых запусков работает отлично (иногда), после некоторых запусков вообще не работает. Ошибка, которую я получаю, когда она не работает:

[2012-11-28 21:42:58,751: ERROR/MainProcess] Received unregistered task of type 'messages.sendnotifies'.
 The message has been ignored and discarded.

 Did you remember to import the module containing this task?
 Or maybe you are using relative imports?
 Please see http://bit.ly/gLye1c for more information.

 The full contents of the message body was:
 {'retries': 0, 'task': 'messages.sendnotifies', 'eta': None, 'args': [41L], 'expires': None, 'callbacks': None, 'errbacks': None, 'kwargs': {}, 'id': '47da3ba7-ec91-4056-bb4f-a6afec2f960f', 'utc': True} (183b)
 Traceback (most recent call last):
   File "/var/www/virtual/venv/lib/python2.7/site-packages/celery/worker/consumer.py", line 410, in on_task_received
     connection = self.connection
 KeyError: 'messages.sendnotifies'

Когда я запускаю сельдерей с --loglevel=DEBUG, он отображает задачу в списке задач:

[Tasks]
   . celery.backend_cleanup
   . celery.chain
   . celery.chord
   . celery.chord_unlock
   . celery.chunks
   . celery.group
   . celery.map
   . celery.starmap
   . event.notfiy
   . messages.sendnotifies
   . money.checktransaction
   . money.deploypayment
   . money.invoicepromotion
   . protocols.plotweight
   . questionnaire.deploy
   . questionnaire.suitability
   . registration.notify
   . tracking.track
   . user.checkaccount
   . user.checkaccounts
   . user.fixpermissions
   . user.genpassreset

Я еще не мог определить систему, когда она работает, а когда нет. Но я обновил все соответствующие пакеты до последней версии, доступной на сегодняшний день, и она все еще не работает.

Я надеюсь на любые идеи о том, почему это может не работать и как я могу это исправить. Каждый отзыв очень ценится, так как я немного в отчаянии!


person Alexander Jung-Loddenkemper    schedule 28.11.2012    source источник


Ответы (1)


Это может быть ошибка, исправленная в текущей версии 3.0, вы можете помочь протестировать ее, установив:

установка pip https://github.com/celery/celery/zipball/3.0

person asksol    schedule 06.12.2012