celery+rabbitmq报错TypeError: can't pickle memoryview objects
解决办法参考:https://blog.csdn.net/m0_37702587/article/details/88742163
报错信息
[2019-08-15 03:19:49,018: CRITICAL/MainProcess] Unrecoverable error: SystemError('<built-in method _basic_recv of Connection object at 0x7fa6dd870318> returned a result with an error set',) Traceback (most recent call last): File "/usr/local/lib/python3.6/dist-packages/kombu/messaging.py", line 624, in _receive_callback return on_m(message) if on_m else self.receive(decoded, message) File "/usr/local/lib/python3.6/dist-packages/celery/worker/consumer/consumer.py", line 568, in on_task_received callbacks, File "/usr/local/lib/python3.6/dist-packages/celery/worker/strategy.py", line 203, in task_message_handler handle(req) File "/usr/local/lib/python3.6/dist-packages/celery/worker/worker.py", line 223, in _process_task_sem return self._quick_acquire(self._process_task, req) File "/usr/local/lib/python3.6/dist-packages/kombu/asynchronous/semaphore.py", line 62, in acquire callback(*partial_args, **partial_kwargs) File "/usr/local/lib/python3.6/dist-packages/celery/worker/worker.py", line 228, in _process_task req.execute_using_pool(self.pool) File "/usr/local/lib/python3.6/dist-packages/celery/worker/request.py", line 551, in execute_using_pool correlation_id=task_id, File "/usr/local/lib/python3.6/dist-packages/celery/concurrency/base.py", line 155, in apply_async **options) File "/usr/local/lib/python3.6/dist-packages/billiard/pool.py", line 1489, in apply_async self._quick_put((TASK, (result._job, None, func, args, kwds))) File "/usr/local/lib/python3.6/dist-packages/celery/concurrency/asynpool.py", line 819, 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 "/usr/local/lib/python3.6/dist-packages/celery/worker/worker.py", line 205, in start self.blueprint.start(self) File "/usr/local/lib/python3.6/dist-packages/celery/bootsteps.py", line 119, in start step.start(parent) File "/usr/local/lib/python3.6/dist-packages/celery/bootsteps.py", line 369, in start return self.obj.start() File "/usr/local/lib/python3.6/dist-packages/celery/worker/consumer/consumer.py", line 318, in start blueprint.start(self) File "/usr/local/lib/python3.6/dist-packages/celery/bootsteps.py", line 119, in start step.start(parent) File "/usr/local/lib/python3.6/dist-packages/celery/worker/consumer/consumer.py", line 596, in start c.loop(*c.loop_args()) File "/usr/local/lib/python3.6/dist-packages/celery/worker/loops.py", line 91, in asynloop next(loop) File "/usr/local/lib/python3.6/dist-packages/kombu/asynchronous/hub.py", line 362, in create_loop cb(*cbargs) File "/usr/local/lib/python3.6/dist-packages/kombu/transport/base.py", line 238, in on_readable reader(loop) File "/usr/local/lib/python3.6/dist-packages/kombu/transport/base.py", line 220, in _read drain_events(timeout=0) File "/usr/local/lib/python3.6/dist-packages/librabbitmq/__init__.py", line 227, in drain_events self._basic_recv(timeout) SystemError: <built-in method _basic_recv of Connection object at 0x7fa6dd870318> returned a result with an error set
把你的celery的配置文件中的BROKER_URL 的amqp改成pyamqp
修改前
BROKER_URL = 'amqp://' # 使用RabbitMQ作为消息代理
修改后
BROKER_URL = 'pyamqp://' # 使用RabbitMQ作为消息代理

浙公网安备 33010602011771号