5

Celeryを実行していますが、すべて正常に動作しています。

Celery はデフォルトで、 と呼ばれるデータベース テーブルを使用してタスクの結果を保存しますcelery_taskmeta。このテーブルは急速に成長しています。ドキュメントを読みましたが、古いエントリのクリーンアップに関するヒントは見つかりませんでした。

によって自動的にスケジュールされたcelerybeat、このテーブルをクリーンアップするタスクがありますか、それともここで何かを設定する必要がありますか?

[編集]

これは結果のバックエンド設定に関連していますか? ドキュメンテーションによると、これにはデフォルト値はありません。しかし、それdatabaseがデフォルトでありdefault、通常のDjango データベース構成の構成を使用しているようです。

4

4 に答える 4

2

おそらく、質問を投稿した後にドキュメントが作成された可能性があります。http://celery.readthedocs.org/en/latest/configuration.htmlのページに答えがあります。

組み込みの定期的なタスクは、[ CELERY_TASK_RESULT_EXPIRES 構成ディレクティブで設定された時間] 後に結果を削除します ... デフォルトでは、1 日後に有効期限が切れます。

典型的な Django インストールでは、バックエンドをdatabaseに設定します。(そのため、データベースのcelery_taskmetaテーブルに保存された結果が表示されます。) この設定の構成ディレクティブは次のようになります。

CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend'

私は自分のインストールをチェックしましたが、確かに、 celery.backend_cleanupと呼ばれる毎日の定期的なタスクがあります

定期的なタスクを実行するには、celerybeatデーモン/サービスを実行している必要があると思います。

于 2015-07-30T21:36:03.707 に答える
1

You have read the Celery's documentation.

Django-celery overrides result backend for you.

于 2012-10-26T12:16:33.067 に答える
0

既に述べたように、クリーンアップはデフォルトで自動的に行われます。必要なのは、次のクエリを使用してテーブル サイズを更新することだけです: VACUUM FULL celery_taskmeta

于 2019-07-16T17:19:59.480 に答える