私はDjango + Celery + RabbitMQを実行しています。 いくつかのタスク名を変更した後、Django Celery BeatのPeriodic tasksテーブルからこのキーを持つタスクを削除し、Celeryワーカーを再起動した後でも、「未登録タスク」KeyErrorsが発生し始めました。彼ら 持続する そのあとも --purgeオプションを指定して実行する.
どうすればそれらを取り除くことができますか?
回答:
回答№1は0これらのタスクの最後をフラッシュするには、古いメソッドヘッダーを使用してそれらを再実装できますが、ロジックは使用できません。
たとえば、メソッドを削除した場合 original
そして今エラーを得ている
[ERROR/MainProcess] Received unregistered task of type u"myapp.tasks.original"
ただ再作成 original
メソッドを次のように使用します。
tasks.py
@shared_task
def original():
# keep legacy task header so that it is flushed out of queue
# FIXME: this will be removed in the next release
pass
各環境でこのバージョンを実行すると、残りのタスクはすべて処理されます(そして何もしません)。あなたがそれらをあなたから削除したことを確認してください 定期的なタスク そして、それらはもう呼び出されていません。その後、次回のデプロイの前にこのメソッドを削除することができます。この問題は繰り返し発生しません。
これはまだ回避策です、そしてそれができることが望ましいでしょう タスクを個別に確認して削除する.