2014-10-26 3 views
0

У меня аналогичная проблема с этим один: "Unknown task" error in Celery Flower when posting a new taskНеизвестная ошибка задачи в сельдерее 3.1.6 с цветком 0.7.3

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

 
[D 141025 19:22:44 state:87] Registered: {'[email protected]': ['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] Enabling events 
[D 141025 19:22:50 state:153] Resuming inspecting workers... 
[I 141025 19:22:50 tasks:99] Invoking a task 'crossbar.tasks.add.add' with '[1, 2]' and '{}' 
[W 141025 19:22:50 web:1404] 404 POST /api/task/async-apply/crossbar.tasks.add.add (127.0.0.1): Unknown task 'crossbar.tasks.add.add' 
[W 141025 19:22:50 web: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 

Вот как я бег сельдерея: сельдерей -A MyApp работник --loglevel = Информация

И я бегу цветок на отделенной процесс таким образом: цветок --conf = SRC/перекладина/flowerconfig.py

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

 
[2014-10-26 17:03:06,640: CRITICAL/MainProcess] Can't decode message body: ContentDisallowed('Refusing to deserialize untrusted content of type pickle (application/x-python-serialize)',) [type:'application/x-python-serialize' encoding:'binary' headers:{}] 

body: '\x80\x02}q\x01(U\x07expiresq\x02NU\x03utcq\x03\x88U\x04argsq\x04]q\x05(K\x01K\x02eU\x05chordq\x06NU\tcallbacksq\x07NU\x08errbacksq\x08NU\x07tasksetq\tNU\x02idq\nU$f1e8fc87-d0ee-4fc6-86cb-8edded4a4f4cq\x0bU\x07retriesq\x0cK\x00U\x04taskq\rX\x16\x00\x00\x00crossbar.tasks.add.addq\x0eU\ttimelimitq\x0fNN\x86q\x10U\x03etaq\x11NU\x06kwargsq\x12}q\x13u.' (229b) 
Traceback (most recent call last): 
    File "/Users/psantann/Documents/git/crossbar-taskmgr_trunk/.tox/crossbar-taskmgr/lib/python2.6/site-packages/kombu/messaging.py", line 586, in _receive_callback 
    decoded = None if on_m else message.decode() 
    File "/Users/psantann/Documents/git/crossbar-taskmgr_trunk/.tox/crossbar-taskmgr/lib/python2.6/site-packages/kombu/message.py", line 142, in decode 
    self.content_encoding, accept=self.accept) 
    File "/Users/psantann/Documents/git/crossbar-taskmgr_trunk/.tox/crossbar-taskmgr/lib/python2.6/site-packages/kombu/serialization.py", line 174, in loads 
    raise self._for_untrusted_content(content_type, 'untrusted') 
ContentDisallowed: Refusing to deserialize untrusted content of type pickle (application/x-python-serialize) 

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

+0

Проблема «запрета», которую я исправил, добавив «pickle» в список содержимого accept (да, я знаю, это считается проблемой безопасности, но пока я не понял, как будет иметь сериализацию цветов по-другому, что будет достаточно), так что кажется теперь моя единственная проблема заключается в том, что async применяется для работы. –

+0

у вас установленCELERY_TASK_SERIALIZER, CELERY_RESULT_SERIALIZER на 'json'? – ChillarAnand

+0

Да, я сделал, но похоже, что я получаю от цветка необходимый «маринованный» (см. Мой комментарий выше). Моя проблема прямо сейчас связана с тем, что цветок (а не сельдерей) не регистрирует мои задачи. Я попытался использовать цветок -А, но у меня нет точки входа в сельдерей в цветочном приложении. Я надеялся, что смогу сделать что-то эквивалентное от flowerconfig.py –

ответ

2

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

flower -A your_app 

или

celery flower -A your_app 

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

+0

Я использую несколько иной механизм регистрации моих задач. В другом процессе используется сельдерей -A my_app и регистрируются задачи с сельдереем. Когда я запускаю команду цветка, у нее, похоже, есть доступ к задачам, так как они появляются на выходе выше. –

+0

Добавлено несколько подробностей о том, как я запускаю cmds к описанию –

+0

Это решение действительно работает, как только я правильно импортирую свои задачи, благодаря Chillar –

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