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作为消息代理

 

posted @ 2019-08-15 19:35  平平无奇小辣鸡  阅读(174)  评论(0)    收藏  举报