2013-05-21 10 views
7

Ich verwende regelmäßige Sellerie Aufgaben mit Django. Früher habe ich die folgende Aufgabe in meiner app/tasks.py Datei haben:Sellerie Beat Queue enthält veraltete Aufgaben

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

Aber jetzt diese Aufgabe von meiner app/tasks.py Datei entfernt wurde. Aber ich sehe immer wieder Aufruf diese Aufgabe in meinem Sellerie Protokoll:

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

Es scheint, dass die Sellerie Beat-Scheduler, die ich benutze nicht seine Warteschlange aktualisieren. Dies ist, wie der Planer in meinem Projekt/settings.py-Datei definiert ist:

CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler" 

Neustarten der Sellerie Arbeiter hilft nicht. Zu Ihrer Information, ich benutze einen Redis-Broker.

Wie kann ich die Sellerie-Beat-Warteschlange entweder löschen oder aktualisieren, so dass ältere Aufgaben nicht an meinen Selleriearbeiter gesendet werden?

+0

Ich denke, Sie müssen auch den Datenbankeintrag für den Zeitplan entfernen. Sie können dies vom django admin tun. – Ngenator

+0

Hallo Regis, hast du es geschafft, dieses Problem zu lösen. Ich habe das gleiche Problem. @Ngenator - Ihre Lösung ist –

+0

Das Problem könnte im Redis-Server sein. Da die Sellerie-Aufgaben ein gebeiztes Objekt sind, das in den Redis-Server geschoben wurde, halten die Redis die veralteten Aufgaben aufrecht. Starten Sie den Redis-Server neu oder rufen Sie die Löschfunktion der Task auf. –

Antwort

-1

Löschen Sie die .pyc-Datei, in der die Aufgabe ursprünglich geschrieben wurde. Oder löschen Sie einfach alle .pyc-Dateien in Ihrem Projektverzeichnis.

sollten Dieser Befehl funktioniert:

find . -name "*.pyc" -exec rm -rf {} \; 

How do I remove all .pyc files from a project?

+0

Das funktioniert nicht! Ich habe auch versucht, den "Sellerybeat-Zeitplan" zu entfernen. – Babu

2

django-celery installieren.

Wie bereits erwähnt, wird dieses Projekt nicht benötigt, um Sellerie zu verwenden, aber Sie benötigen dies, um die Verwaltungsschnittstelle unter /admin/djcelery/ für die Verwaltung periodischer Aufgaben zu aktivieren. Anfangs wird es keine registrierten oder periodischen Aufgaben geben.

Starten Sie neu und überprüfen Sie die Tabelle Periodische Aufgaben erneut. Beat hätte die vorhandenen geplanten Aufgaben in die Tabelle mit dem in den Einstellungen oder den Dekoratoren definierten Intervall oder Crontab eingefügt. Dort können Sie die unerwünschten Aufgaben löschen.

UPDATE: Von Sellerie4 wird empfohlen, dieses Paket zu verwenden. https://github.com/celery/django-celery-beat

Verwandte Themen