我遇到了与此类似的问题: 发布新任务时 Celery Flower 中出现“未知任务”错误
但是我正在运行flower 0.7.3,它已经具有上一期提到的修复。当我加载花时,我看到以下内容:
[D 141025 19:22:44 state: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 state:153] 恢复检查工人... [I 141025 19:22:50 tasks:99] 使用“[1, 2]”和“{}”调用任务“crossbar.tasks.add.add” [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 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,但是在 celery 控制台上会出现以下错误:
[2014-10-26 17:03:06,640: CRITICAL/MainProcess] 无法解码消息正文:ContentDisallowed('拒绝反序列化类型为 pickle (application/x-python-serialize)'的不受信任的内容',) [type:' application/x-python-serialize' encoding:'binary' headers:{}] 正文:'\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) 回溯(最近一次通话最后): _receive_callback 中的文件“/Users/psantann/Documents/git/crossbar-taskmgr_trunk/.tox/crossbar-taskmgr/lib/python2.6/site-packages/kombu/messaging.py”,第 586 行 解码 = 无 if on_m else message.decode() 解码中的文件“/Users/psantann/Documents/git/crossbar-taskmgr_trunk/.tox/crossbar-taskmgr/lib/python2.6/site-packages/kombu/message.py”,第 142 行 self.content_encoding, 接受=self.accept) 文件“/Users/psantann/Documents/git/crossbar-taskmgr_trunk/.tox/crossbar-taskmgr/lib/python2.6/site-packages/kombu/serialization.py”,第 174 行,加载中 raise self._for_untrusted_content(content_type, 'untrusted') ContentDisallowed:拒绝反序列化 pickle 类型的不受信任的内容 (application/x-python-serialize)
好的,如果我将“pickle”添加到接受的内容列表中,我不会再收到序列化错误。但是花仍然不知道我的任务,因此异步应用不起作用。我无法让花 -A 应用程序为我工作,因为我不是通过 celery 应用程序初始化它,而是使用flowerconfig.py,在flowerconfig.py 中我有 CELERY_IMPORTS 设置,但实际任务来自不同的 python 包。用花注册的正确方法是什么?