django 2.2, celery 4.3,出现 kombu.exceptions.EncodeError: cannot serialize '_io.BufferedReader'

Posted zdoubly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django 2.2, celery 4.3,出现 kombu.exceptions.EncodeError: cannot serialize '_io.BufferedReader'相关的知识,希望对你有一定的参考价值。

情况说明:celery 默认解析为 pickle

 class xxxxx():
    def __init__(self,request):
            self.request = request (这个是 django 请求的 requst <WSGIRequest: POST ‘/server/xxxxx/‘>,最后把这个去掉就好了,)
    def funcA(self,x,y):
            return x,y
    def funcB(self):
            # website_request 这是我 app 下的  tasks.py 里的一个函数  ,然后把它放入后台,根据返回结果去调用 self.funcA
             website_request.apply_async(kwargs={‘fun‘:self.funcA,‘x‘:1,‘y‘:1})
     

分析:

  • 把函数传入后台时,不要在初始化的时候,传入一些 pickle 不能解析的函数,列如 接受 django 请求的 request,其他的目前未发现

以上是关于django 2.2, celery 4.3,出现 kombu.exceptions.EncodeError: cannot serialize '_io.BufferedReader'的主要内容,如果未能解决你的问题,请参考以下文章

Django+Celery+redis kombu.exceptions.EncodeError:Object of type is not JSON serializable报错

Django-celery 和 RabbitMQ 不执行任务

django+redis+celery(beat)发布定时任务

Django 项目celery beat报错:Pidfile already exists

python3.7 中使用django-celery 完成异步任务

使用 Django-Celery 重试任务 - Django/Celery