Неизвестная ошибка задачи в Celery 3.1.6 с цветком 0.7.3

У меня возникла проблема, похожая на эту: ошибка "Неизвестная задача" в Celery Flower при публикации новой задачи

Однако я использую цветок 0.7.3, который уже имеет исправление, упомянутое в предыдущем выпуске. Когда я загружаю цветок, я вижу следующее:

[D 141025 19:22:44 состояние:87] Зарегистрировано: {'celery@myhost': ['crossbar.tasks.add.add',
                             'Crossbar.tasks.ping.ping',
                             'Crossbar.tasks.send_email.send_email',
                             'Crossbar.tasks.send_message.send_message',
                             'crossbar.tasks.send_sms.send_sms']}
[D 141025 19:22:49 events:116] Включение событий
[D 141025 19:22:50 состояние:153] Возобновление проверки рабочих...
[I 141025 19:22:50 tasks:99] Вызов задачи 'crossbar.tasks.add.add' с '[1, 2]' и '{}'
[W 141025 19:22:50 web:1404] 404 POST /api/task/async-apply/crossbar.tasks.add.add (127.0.0.1): неизвестная задача 'crossbar.tasks.add.add'
[W 141025 19:22:50 веб:1811] 404 POST /api/task/async-apply/crossbar.tasks.add.add (127.0.0.1) 1.11ms

Но, как вы можете видеть, POST не работает, я пытаюсь опубликовать следующее:

curl -X POST -d '{"args": [1,2]}' http: // myhost: 15629 / api / task / async-apply / crossbar.tasks.add.add

Вот как я бегу из сельдерея: сельдерей -Мапп-работник --loglevel=info

И я запускаю flower в отдельном процессе, например: flower --conf = src / crossbar / flowerconfig.py

Если я заменяю async-apply на send-task, я получаю 200, но затем на консоли сельдерея я получаю следующую ошибку:

[2014-10-26 17: 03: 06,640: CRITICAL / MainProcess] Невозможно декодировать тело сообщения: ContentDisallowed('Отказ десериализовать ненадежное содержимое типа pickle (application/x-python-serialize)',) [type:'application/x-python-serialize'кодировка:' двоичные 'заголовки:{}]

тело: '\x80\x02}q\x01(U\x07expiresq\x02NU\x03utcq\x03\x88U\x04argsq\x04]q\x05(K\x01K\x02eU\x05chordq\x06NU\tcallbacksq\x07NU\x08errback x07tasksetq \ ТНУ \ x02idq \ NU $f1e8fc87-d0ee-4fc6-86cb-8edded4a4f4cq\x0bU\x07retriesq\x0cK\x00U\x04taskq\ хХ \x16\x00\x00\x00crossbar.tasks.add.addq\x0eU\ttimelimitq\x0fNN\x86q\x10U\x03etaq\x11NU\x06kwargsq\x12}q\x13u.' (229b)
Traceback (последний вызов был последним):
  Файл "/Users/psantann/Documents/git/crossbar-taskmgr_trunk/.tox/crossbar-taskmgr/lib/python2.6/site-packages/kombu/messaging.py", строка 586, в _receive_callback
    decoded = Нет, если on_m, иначе message.decode()
  Файл "/Users/psantann/Documents/git/crossbar-taskmgr_trunk/.tox/crossbar-taskmgr/lib/python2.6/site-packages/kombu/message.py", строка 142, в декодировании
    self.content_encoding, accept=self.accept)
  Файл "/Users/psantann/Documents/git/crossbar-taskmgr_trunk/.tox/crossbar-taskmgr/lib/python2.6/site-packages/kombu/serialization.py", строка 174, в загрузках
    поднять self._for_untrusted_content(content_type, 'unrusrusted')
ContentDisallowed: отказ от десериализации ненадежного содержимого типа pickle (application / x-python-serialize)

Хорошо, я больше не получаю ошибку сериализации, если я добавляю 'pickle' в список допустимого содержимого. Однако цветок до сих пор не знает о моих задачах, поэтому async-apply не работает. Я не мог заставить приложение flower -A работать для меня, потому что я не инициализирую его через приложение celery, а использую flowerconfig.py, в flowerconfig.py у меня есть установка CELERY_IMPORTS, но реальные задачи происходят из другого пакета python. Каков был бы правильный способ зарегистрировать тех с цветком?

1 ответ

Решение

Похоже, вы не проходите мимо app аргумент в пользу цветка. Чтобы завести цветок, нужно вызвать его

flower -A your_app

или же

celery flower -A your_app

Если вы не пройдете app аргумент это выдает ошибку 404.

Другие вопросы по тегам