带有Python 3的Librabbitmq 2.0.0出现TypeError:无法腌制memoryview对象

dow*_*123 5 amqp py-amqplib celery librabbitmq

我正在使用git repo的最新主分支https://github.com/celery/librabbitmqlibrabbitmq==2.0.0按照自述文件中的说明安装Python 3.6

使用开发版本

您可以通过执行以下操作来克隆存储库:

$ git clone git://github.com/celery/librabbitmq.git
Run Code Online (Sandbox Code Playgroud)

然后通过执行以下操作安装它:

$ cd librabbitmq
$ make install        # or make develop
Run Code Online (Sandbox Code Playgroud)

正常运行(在操作系统中安装了某些二进制文件进行c编译之后),但是当我随后执行一个小的a+b添加任务并对其进行调用时,add.delay(2,2)失败并出现以下错误。我抬头看,发现Celery 4使用json作为序列化器,所以很明显这不是因为pickle序列化

  1. 从librabbitmq更改为pyamqp代理正常工作
  2. MacOS和Ubuntu 16中的情况完全相同

[2018-04-30 23:40:02,956:CRITICAL / MainProcess]不可恢复的错误:SystemError('返回了带有错误集的结果',)追溯(最近一次调用为最后):文件“ /Users/somghosh/.virtualenvs/ ctdb / lib / python3.6 / site-packages / kombu / messaging.py”第624行,在_receive_callback中,如果on_m则返回on_m(message),否则self.receive(已解码,消息)文件“ /Users/somghosh/.virtualenvs/ ctdb / lib / python3.6 / site-packages / celery / worker / consumer / consumer.py”,行570,在on_task_received回调中,文件“ /Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site- package / celery / worker / strategy.py”,第145行,位于task_message_handler句柄(要求)文件“ /Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/worker.py”中,第221行,在_process_task_sem中返回self._quick_acquire(self._process_task,req)在获取回调中的文件“ /Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/kombu/async/semaphore.py”,第62行(* partial_args,** partial_kwargs)文件“ /Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/worker.py”,第226行,位于_process_task req.execute_using_pool(自身。池)文件“ /Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/request.py”,行531,在execute_using_poolcorrelation_id = task_id中,文件“ / Users / somghosh /”。 virtualenvs / ctdb / lib / python3.6 / site-packages / celery / concurrency / base.py”,第155行,位于apply_async ** options)文件“ /Users/somghosh/.virtualenvs/ctdb/lib/python3”中。6 / site-packages / billiard / pool.py“,行1486,位于apply_async self._quick_put((TASK,(result._job,None,func,args,kwds)))文件” /Users/somghosh/.virtualenvs/ ctdb / lib / python3.6 / site-packages / celery / concurrency / asynpool.py“,行813,在send_job主体中= dumps(tup,protocol = protocol)TypeError:无法腌制memoryview对象

上面的异常是以下异常的直接原因:

追溯(最近一次通话):文件“ /Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/worker.py”,行203,位于self.blueprint.start(自我)文件“ /Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/bootsteps.py”,行119,在开始步骤中。start(父)文件“ / Users / somghosh /。 virtualenvs / ctdb / lib / python3.6 / site-packages / celery / bootsteps.py“,第370行,在开始时返回self.obj.start()文件“ /Users/somghosh/.virtualenvs/ctdb/lib/python3。 6 / site-packages / celery / worker / consumer / consumer.py“,第320行,在开始blueprint.start(self)文件“ /Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/ celery / bootsteps.py”,第119行,位于开始step.start(父级)文件“/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/consumer/consumer.py“,第596行,位于开始c.loop(* c.loop_args())文件“ /用户/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/loops.py”,第88行,位于asynloop next(循环)文件“ /Users/somghosh/.virtualenvs/ctdb/lib”中/python3.6/site-packages/kombu/async/hub.py“,行354,位于create_loop cb(* cbargs)文件“ /Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/ kombu / transport / base.py”,第236行,在on_read阅读器(循环)文件“ /Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/kombu/transport/base.py”中, 218,在_readrain_events(timeout = 0)文件中,“ / Users / somghosh / .virtualenvs / ctdb / lib / python3。6 / site-packages / librabbitmq-2.0.0-py3.6-macosx-10.6-intel.egg / librabbitmq /初始化 py”为,线227,在drain_events self._basic_recv(超时)关于SystemError:返回的结果,并显示错误组

auv*_*ipy 0

不建议将此库与 celery 一起用作rabbitmq代理。相反,请尝试 py-amqp。这是更容易维护且更少错误的。