2012-10-25 11 views
5

Ich habe Celery läuft und alles funktioniert gut.Cleanup taskmeta Tabelle von Sellerie

Sellery verwendet standardmäßig eine Datenbanktabelle zum Speichern der Aufgabenergebnisse mit der Bezeichnung celery_taskmeta. Dieser Tisch wächst sehr schnell. Ich habe die Dokumente gelesen, aber ich habe keinen Hinweis darauf gefunden, alte Einträge zu bereinigen.

Gibt es eine Aufgabe automatisch geplant von celerybeat, die diese Tabelle reinigt oder muss ich hier etwas konfigurieren?

[EDIT]

Ist das mit dem result backend settings verwandt? Dies ist ein wenig verwirrend, da die Dokumentation sagt, dass es dafür keinen Standardwert gibt. Aber es scheint, dass database ist die Standardeinstellung und es verwendet die default Konfiguration von normalen Django database configuration.

Antwort

1

Sie haben die Dokumentation des Selleries gelesen.

Django-Sellerie overrides Ergebnis Backend für Sie.

+0

In der [Dokumentation von Django-Sellerie] (http://docs.selleryproject.org/en/latest/django/) wird nirgends erwähnt, welche Standardeinstellungen vorgenommen werden. Das Lesen der Dokumentation von Django-Sellerie beantwortet die zweite Frage nicht und die Dokumentation von Sellerie selbst beantwortet die Hauptfrage nicht. – Martin

+0

Aber Ihr Link beantwortet die zweite Frage. – Martin

+0

Aber was ist damit zu tun? – Alper

2

Sie können manuell dieser Tabelle auf diese Weise reinigen:

from djcelery.models import TaskMeta, states TaskMeta.objects.filter(status=states.SUCCESS).delete()

2

Vielleicht ist die Dokumentation geschrieben wurde, nachdem Sie die Frage gepostet. Die Seite auf http://celery.readthedocs.org/en/latest/configuration.html liefert die Antwort:

Eine eingebaute in periodischer Task wird die Ergebnisse nach [der Zeit eingestellt, in der CELERY_TASK_RESULT_EXPIRES Konfigurationsdirektive] löscht ... Die Standardeinstellung ist nach 1 Tag abläuft.

Für eine typische Installation Django würden Sie das Backend Datenbank gesetzt. (Deshalb sollten Sie die Ergebnisse in der celery_taskmeta Tabelle Ihrer Datenbank gespeichert sind, zu sehen.) Die Konfigurationsdirektive für diese Einstellung wie folgt aussieht:

CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend' 

ich meine eigene Installation überprüft und sicher genug, es gibt eine täglich periodische Aufgabe namens sellery.backend_cleanup, die automatisch erstellt wurde, wenn ich Sellerie (oder vielleicht, wenn ich Django-Sellerie installiert) installiert.

Für die periodische Aufgabe zu laufen glaube ich, dass Sie den sellerybeat Dämon/Service laufen lassen müssen.