Ошибка при использовании IronMQ в качестве брокера сельдерея в Heroku

В настоящее время у нас есть приложение Python Django, размещенное в облаке Heroku, которое использует воркеры Celery для фоновой обработки.

Работники Celery использовали django DB в качестве брокера. Недавно мы решили использовать IronMq в качестве брокера, так как это корпоративное решение.

Пакеты, которые мы используем,

Python 2.7
Django 1.3
Celery 3.0.16
Django-celery 3.0.11
Iron-celery 0.3.1

Мы используем двух рабочих. Один воркер для очереди «Обычный приоритет», а другой воркер — для очереди «Высокий приоритет». Но когда приложение устало запускать воркер для очереди «HighPriority», сработала ошибка, и в результате оба воркера упали.

Ниже приведены дополнительные параметры, которые мы используем для настройки очередей IronMQ и celery.

BROKER_URL='ironmq://xxxxx:xxxxx@'
CELERY_RESULT_BACKEND='ironcache://xxxxx:xxxxx@'

import os
import djcelery
import iron_celery
from kombu import Exchange, Queue
djcelery.setup_loader()


CELERY_DEFAULT_QUEUE = 'NormalPriority'
CELERY_QUEUES = {
                CELERY_DEFAULT_QUEUE: {
                                      'exchange': CELERY_DEFAULT_QUEUE,
                                      'binding_key': CELERY_DEFAULT_QUEUE,
                                      }
                }


CELERY_CREATE_MISSING_QUEUES=True
CELERY_ROUTES = {'tasks.retrieveDocketUsingWorker': {'queue': 'HighPriority'},
                'tasks.retrieveDocketFromDdUsingWorker': {'queue': 'HighPriority'}
                }

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

 2013-03-14T09:21:17+00:00 app[celeryd1.1]:     self.queue_declare(nowait, passiv
   e=False)
 2013-03-14T09:21:17+00:00 app[celeryd1.1]:   File "/app/.heroku/python/lib/pytho
 n2.7/site-packages/kombu/entity.py", line 497, in queue_declare
 2013-03-14T09:21:17+00:00 app[celeryd1.1]:     nowait=nowait)
 2013-03-14T09:21:17+00:00 app[celeryd1.1]:   File "/app/.heroku/python/lib/pytho
 n2.7/site-packages/kombu/transport/virtual/__init__.py", line 401, in queue_decl
 are
  2013-03-14T09:21:17+00:00 app[celeryd1.1]:     return queue, self._size(queue),
   0
    2013-03-14T09:21:17+00:00 app[celeryd1.1]:   File "/app/.heroku/python/lib/pytho
     n2.7/site-packages/iron_celery/iron_mq_transport.py", line 78, in _size
    2013-03-14T09:21:17+00:00 app[celeryd1.1]:     return details["size"]
 2013-03-14T09:21:17+00:00 app[celeryd1.1]: **TypeError: string indices must be int
      egers**
2013-03-14T09:21:17+00:00 app[celeryd1.1]: [2013-03-14 05:21:17,631: INFO/MainPr
ocess] Celerybeat: Shutting down...
2013-03-14T09:21:18+00:00 heroku[celeryd1.1]: Process exited with status 0
2013-03-14T09:21:18+00:00 heroku[celeryd1.1]: State changed from up to crashed
2013-03-14T09:21:23+00:00 heroku[router]: at=info method=POST path=/getDocketDow
nloaderWorkerStatus/ host=www.irelanddev.com fwd="115.119.213.182" dyno=web.1 qu
eue=0 wait=0ms connect=1ms service=2447ms status=200 bytes=60
2013-03-14T09:21:26+00:00 heroku[router]: at=info method=POST path=/getDocketDow
 nloaderWorkerStatus/ host=www.irelanddev.com fwd="115.119.213.182" dyno=web.1 qu
eue=0 wait=0ms connect=1ms service=23ms status=200 bytes=60
2013-03-14T09:21:31+00:00 heroku[router]: at=info method=POST path=/getDocketDow
nloaderWorkerStatus/ host=www.irelanddev.com fwd="115.119.213.182" dyno=web.1 qu
eue=0 wait=0ms connect=1ms service=196ms status=200 bytes=60
2013-03-14T09:21:36+00:00 heroku[router]: at=info method=POST path=/getDocketDow

Заранее спасибо.


person SkariaArun    schedule 15.03.2013    source источник


Ответы (1)


Я считаю, что это аналогичная проблема, которую я видел раньше. Пожалуйста, обновите iron_core (pip install iron-core -U). Это должна быть версия 1.0.2.

person Paddy    schedule 15.03.2013
comment
Спасибо Падди. Я обновлю версию с железным ядром. - person SkariaArun; 18.03.2013
comment
@SkariaArun Я предполагаю, что вы тот, кому я пишу по электронной почте из системы поддержки Iron.io. :) Если вы убедитесь, что и железное ядро, и запросы обновлены (иногда несколько установленных версий запросов каким-то образом сбивают с толку Python), это не должно быть проблемой. :) Извините за проблемы! Не стесняйтесь заходить на get.iron.io/chat, если вам нужна помощь. - person Paddy; 19.03.2013
comment
Спасибо, Пэдди, за вашу ценную поддержку. Вы писали мне из службы поддержки iron.io. В настоящее время мы перенесли реализацию на некоторое время позже. Это связано с тем, что у нас есть другие срочные исправления, которые необходимо внедрить. Я обязательно обновлю модуль запроса. Мы свяжемся с вами, когда начнем реализацию ironMQ. - person SkariaArun; 20.03.2013