Celery 3.1.6中带有花0.7.3的未知任务错误

时间:2014-10-26 02:31:26

标签: python post celery flower

我遇到类似的问题: "Unknown task" error in Celery Flower when posting a new task

然而,我正在运行花0.7.3已经有上一期提到的修复。当我加载花时,我看到以下内容:

[D 141025 19:22:44 state:87] Registered: {'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] 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

以下是我如何运行Celery: celery -A myapp worker --loglevel = info

我正在分开的过程中运行花,如下所示: flower --conf = src / crossbar / flowerconfig.py

如果我用send-task替换async-apply,我得到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)

好的,如果我将'pickle'添加到接受的内容列表中,我不会再收到序列化错误。然而,花仍然不知道我的任务,因此async-apply不起作用。我无法得到花 - 一个应用程序为我工作,因为我没有通过芹菜应用程序初始化它,而是使用flowerconfig.py,在flowerconfig.py我有CELERY_IMPORTS设置,但实际任务来自不同的python包。用花来注册那些是正确的方法是什么?

1 个答案:

答案 0 :(得分:2)

看起来你没有将app参数传递给flower。要开始开花,您需要使用

调用它
flower -A your_app

celery flower -A your_app

如果你没有传递app参数,则会抛出404错误。