同じworker name (id) を持つ親プロセスからforkされたワーカープロセスがあるとdequeueが重複するのか、 EX_RECYCLEが出て worker lost error が起こる。
worker name にユニークな名前を当てているにも関わらずエラーが起きる場合は、デプロイなどのタイミングで 親ワーカープロセスがkill出来てない可能性がある。つまり、残留ワーカープロセスと新規にforkされたワーカープロセスが 名前重複する。
WorkerLostError: Worker exited prematurely: exitcode 155 · Issue #3085 · celery/celery · GitHub
変なワーカープロセスが起動していないかを確認して、
$ supervisorctl stop celery_worker # または $ kill -SIGTERM (pid of celery worker) $ pgrep -f 'celery -A my_project.celery.app worker' # または $ ps auxw | grep 'celery -A my_project.celery.app worker' $ pkill -f 'celery -A my_project.celery.app worker'
それでも残留プロセスがある場合は、再度kill。残留プロセスがゼロになったらworkerを再始動させる。
他は issue コメントの通り。