最近在django项目中使用celery时遇见的bug:

在使用celery+redis进行异步任务的时候,有的任务能够执行成功,有的任务不能执行成功,错误的任务报错(notregistered):

重启redis服务无法解决。

解决办法:重新开启一个redis服务,即可解决(我的解决办法),猜测更换broker库即可,例:0 -> 2。

原因猜测:

出现这种问题,一般都是对celery任务代码或配置信息进行了相关修改(clery任务调用方式或传入参数的修改,celery的backend存放位置的修改等)

有可能是redis中存在相关持久化文件,记住了前面的任务和配置信息,使得redis(broker)在进行任务分发给worker的时候出现混乱,造成错误(notregistered,got an unexpected argument等等)

 

django-celery 报错:

celery redis backend celery redis backend没有结果_配置信息

 

 将djcelery>management>commands>celery.py>将以下代码注释掉即可

celery redis backend celery redis backend没有结果_django_02

 

 

celery beat报错

celery redis backend celery redis backend没有结果_redis_03

 

 解决方案:删除项目中存在的celerybeat.pid文件,重新启动即可