最近在django項目中使用celery時碰見的bug:redis
在使用celery+redis進行異步任務的時候,有的任務可以執行成功,有的任務不能執行成功,錯誤的任務報錯(notregistered):django
重啓redis服務沒法解決。異步
解決辦法:從新開啓一個redis服務,便可解決(個人解決辦法),猜想更換broker庫便可,例:0 -> 2。blog
緣由猜想:配置
出現這種問題,通常都是對celery任務代碼或配置信息進行了相關修改(clery任務調用方式或傳入參數的修改,celery的backend存放位置的修改等)bug
有多是redis中存在相關持久化文件,記住了前面的任務和配置信息,使得redis(broker)在進行任務分發給worker的時候出現混亂,形成錯誤(notregistered,got an unexpected argument等等)celery
將djcelery>management>commands>celery.py>將如下代碼註釋掉便可command
解決方案:刪除項目中存在的celerybeat.pid文件,從新啓動便可im