Celery-Aufgaben speichern Ergebnisse im Backend, die bei längerer Speicherung Speicherplatz verbrauchen und die Leistung beeinträchtigen können. Django-celery-beat und Celery bieten jeweils Optionen an, um die Backend-Daten zu bereinigen. In diesem Artikel werden wir die `CELERY_TASK_RESULT_EXPIRES`-Einstellung und die `celery.backend_cleanup`-Aufgabe von Django-celery-beat besprechen und Empfehlungen für die Nutzung dieser beiden Einstellungen geben.
1. CELERY_TASK_RESULT_EXPIRES
: Option zur Einstellung der Gültigkeitsdauer von Aufgabenresultaten
Die CELERY_TASK_RESULT_EXPIRES
-Einstellung legt fest, wie lange das Ergebnis einzelner Aufgaben im Backend verbleibt, in Sekunden. Diese Einstellung funktioniert wie ein TTL (Time-To-Live), wenn eine Celery-Aufgabe im Backend geplant wird, wodurch die Ergebnisse automatisch nach der festgelegten Zeit gelöscht werden.
- Beispiel für eine Einstellung:
CELERY_TASK_RESULT_EXPIRES = 86400 # 24 Stunden (in Sekunden)
- Durch diese Einstellung werden die Ergebnisse der Aufgaben nach 24 Stunden automatisch aus dem Backend gelöscht. Die TTL-Einstellung ist nützlich, um die Gültigkeitsdauer einzelner Aufgaben zu steuern und zu verhindern, dass unnötige Daten im Backend angesammelt werden.
2. celery.backend_cleanup
von Django-celery-beat: Regelmäßige Säuberungsaufgabe
Wenn Sie Django-celery-beat verwenden, sorgt die celery.backend_cleanup
-Aufgabe dafür, dass alte Aufgabenergebnisse im Backend regelmäßig gereinigt werden. Diese Säuberungsaufgabe ist standardmäßig auf einmal täglich geplant und kann im Django Admin so angepasst werden, dass sie häufiger oder seltener ausgeführt wird. Die regelmäßige Säuberungsaufgabe verhindert das Ablagern alter Daten im Backend, selbst wenn keine TTL-Einstellung vorhanden ist.
- Beispiel für eine Zeitplanung: Im Django Admin können Sie die Frequenz der
celery.backend_cleanup
-Aufgabe anpassen; wenn viele Echtzeitdaten vorhanden sind, kann diese kürzer eingestellt werden, andernfalls kann der Standardwert (einmal täglich) beibehalten werden.
3. Fazit: Welche Einstellung wählen?
Die CELERY_TASK_RESULT_EXPIRES
- und celery.backend_cleanup
-Einstellungen überschneiden sich, daher reicht es aus, eine der beiden zu verwenden, um das Speicherverwaltung im Backend zu gewährleisten. Je nach Bedarf können aber beide Einstellungen gleichzeitig aktiviert werden.
- Wenn Sie Django-celery-beat verwenden: Die
celery.backend_cleanup
-Aufgabe reinigt regelmäßig das Backend, sodass es ausreichend ist, hauptsächlich diese Säuberungsaufgabe zu planen und keine TTL-Einstellung vorzunehmen. - Wenn Sie Celery-Aufgaben programmgesteuert planen: Wenn Sie keinen Django-celery-beat verwenden und selbst Planungslogik schreiben, wird empfohlen,
CELERY_TASK_RESULT_EXPIRES
einzustellen, um das TTL zu verwalten. Auf diese Weise werden die Ergebnisse jeder Aufgabe nach der festgelegten Zeit automatisch gelöscht, wodurch das Speichermanagement im Backend effizienter wird.
Zusammenfassung: Sowohl die Säuberungsaufgabe von Django-celery-beat als auch die TTL-Einstellung können das Backend verwalten. Für Benutzer von Django-celery-beat ist die Planung der Säuberungsaufgabe angemessen, während bei der Programmplanung die TTL-Einstellung empfohlen wird. Es ist auch möglich, beide Einstellungen zu kombinieren, um eine detaillierte Datenverwaltung zu ermöglichen.

Add a New Comment