python-3.x – TypeError:在运行基本的add.delay(1,2)测试时无法pickle memoryview对象

尝试使用cecel 4.1.0和
Python 3.6.4运行add.delay(1,2)的最基本测试,并收到以下错误:

[2018-02-27 13:58:50,194: INFO/MainProcess] Received task:
exb.tasks.test_tasks.add[52c3fb33-ce00-4165-ad18-15026eca55e9]
[2018-02-27 13:58:50,194: CRITICAL/MainProcess] Unrecoverable error:
SystemError(‘ returned a result with an error set’,) Traceback (most
recent call last): File
“/opt/myapp/lib/python3.6/site-packages/kombu/messaging.py”, line 624,
in _receive_callback
return on_m(message) if on_m else self.receive(decoded, message) File
“/opt/myapp/lib/python3.6/site-packages/celery/worker/consumer/consumer.py”,
line 570, in on_task_received
callbacks, File “/opt/myapp/lib/python3.6/site-packages/celery/worker/strategy.py”,
line 145, in task_message_handler
handle(req) File “/opt/myapp/lib/python3.6/site-packages/celery/worker/worker.py”, line
221, in _process_task_sem
return self._quick_acquire(self._process_task, req) File “/opt/myapp/lib/python3.6/site-packages/kombu/async/semaphore.py”,
line 62, in acquire
callback(*partial_args, **partial_kwargs) File “/opt/myapp/lib/python3.6/site-packages/celery/worker/worker.py”, line
226, in _process_task
req.execute_using_pool(self.pool) File “/opt/myapp/lib/python3.6/site-packages/celery/worker/request.py”,
line 531, in execute_using_pool
correlation_id=task_id, File “/opt/myapp/lib/python3.6/site-packages/celery/concurrency/base.py”,
line 155, in apply_async
**options) File “/opt/myapp/lib/python3.6/site-packages/billiard/pool.py”, line 1486,
in apply_async
self._quick_put((TASK, (result._job, None, func, args, kwds))) File
“/opt/myapp/lib/python3.6/site-packages/celery/concurrency/asynpool.py”,
line 813, in send_job
body = dumps(tup, protocol=protocol) TypeError: can’t pickle memoryview objects

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File
“/opt/myapp/lib/python3.6/site-packages/celery/worker/worker.py”, line
203, in start
self.blueprint.start(self) File “/opt/myapp/lib/python3.6/site-packages/celery/bootsteps.py”, line
119, in start
step.start(parent) File “/opt/myapp/lib/python3.6/site-packages/celery/bootsteps.py”, line
370, in start
return self.obj.start() File “/opt/myapp/lib/python3.6/site-packages/celery/worker/consumer/consumer.py”,
line 320, in start
blueprint.start(self) File “/opt/myapp/lib/python3.6/site-packages/celery/bootsteps.py”, line
119, in start
step.start(parent) File “/opt/myapp/lib/python3.6/site-packages/celery/worker/consumer/consumer.py”,
line 596, in start
c.loop(*c.loop_args()) File “/opt/myapp/lib/python3.6/site-packages/celery/worker/loops.py”, line
88, in asynloop
next(loop) File “/opt/myapp/lib/python3.6/site-packages/kombu/async/hub.py”, line 354,
in create_loop
cb(*cbargs) File “/opt/myapp/lib/python3.6/site-packages/kombu/transport/base.py”, line
236, in on_readable
reader(loop) File “/opt/myapp/lib/python3.6/site-packages/kombu/transport/base.py”, line
218, in _read
drain_events(timeout=0) File “/opt/myapp/lib/python3.6/site-packages/librabbitmq-2.0.0-py3.6-linux-x86_64.egg/librabbitmq/init.py”,
line 227, in drain_events
self._basic_recv(timeout) SystemError: returned a result with an error set

我找不到任何人之前发现此错误的证据.我注意到芹菜网站上只提到python 3.5支持,是问题还是这个我缺少的东西?

任何帮助将非常感激!

更新:尝试使用Python 3.5.5并且问题仍然存在.尝试使用Django 4.0.2并且问题仍然存在.

更新:卸载librabbitmq并解决问题.从Python 2.7.5,Django 1.7.7迁移到Python 3.6.4,Django 2.0.2之后就可以看到这种情况.

最佳答案 卸载librabbitmq后,问题得到解决.

点赞