Неизвестная ошибка задачи в 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.