8

Djangoで定期的なセロリタスクを使用しています。app/tasks.py ファイルに次のタスクがありました。

@periodic_task(run_every=timedelta(minutes=2))
def stuff():
  ...

しかし、このタスクは app/tasks.py ファイルから削除されました。ただし、セロリのログにこのタスクの呼び出しが表示され続けます。

[2013-05-21 07:08:37,963: ERROR/MainProcess] Received unregistered task of type u'app.tasks.stuff'.

私が使用しているセロリ ビート スケジューラがキューを更新していないようです。これは、スケジューラーが私の project/settings.py ファイルでどのように定義されているかです:

CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"

セロリ ワーカーを再起動しても解決しません。参考までに、Redis ブローカーを使用しています。

古いタスクがセロリ ワーカーに送信されないように、セロリ ビート キューをクリアまたは更新するにはどうすればよいですか?

4

2 に答える 2

3

django-celeryをインストールします。

引用されているように、このプロジェクトはセロリを使用するために必要ではありませんが、/admin/djcelery/定期的なタスクを管理するための管理インターフェイスを有効にするために必要です。最初は、登録済みまたは定期的なタスクはありません。

ビートを再起動し、定期的なタスクの表を再度確認します。Beat は、設定またはデコレータで定義された間隔または crontab を使用して、既存のスケジュールされたタスクをそのテーブルに追加します。そこで、不要なタスクを削除できます。

更新: celery4 から、このパッケージを使用することをお勧めします。https://github.com/celery/django-celery-beat

于 2015-05-28T08:11:10.970 に答える