Sellerie Aufgaben verschwinden

8

Ich habe ein Django-Projekt, das mit Cron-Skript ausgeführt wird und einen Verwaltungsbefehl ausführt. Dieser Befehl erstellt in Zyklen Aufgaben für Sellerie:

%Vor%

Und die Aufgabe sieht so aus:

%Vor%

Wie Sie sehen können, habe ich einen Logger vor der Ausführung der Aufgabe und in der ersten Zeile drin. Das Problem ist - nach der Aktualisierung des Projektcodes (ein anderer Programmierer hat andere Aufgaben und Sellerie-Versionsupdate hinzugefügt) verschwinden die meisten meiner Aufgaben. Meine Protokolldatei sieht so aus (nur 1 von 8-10 Aufgaben wurde ausgeführt):

%Vor%

Die Sellerie-Protokolldatei enthält keine hilfreichen Informationen. So auch Kaninchen. Es hat viele dieser Sachen, aber es ist nicht mit meinen Aufgaben verbunden, oder tut es?

%Vor%

Was könnte möglicherweise das Problem sein? Wie kann ich Aufgabe verfolgen, um zu verstehen, wenn sie verschwindet?

Bitte helfe =)

    
shaihulud 12.03.2014, 14:29
quelle

2 Antworten

1

Hier ist der Grund meines Problems:
Ссылка
Obwohl die Protokollierung threadsicher ist und die Protokollierung in einer einzelnen Datei aus mehreren Threads in einem einzelnen Prozess unterstützt wird, wird die Protokollierung in einer einzelnen Datei aus mehreren Prozessen nicht unterstützt, da es keinen standardmäßigen Weg gibt, den Zugriff auf eine einzelne Datei seriell zu serialisieren Prozesse in Python. Wenn Sie sich bei einer einzelnen Datei aus mehreren Prozessen anmelden müssen, können Sie beispielsweise alle Prozesse bei einem SocketHandler anmelden und einen separaten Prozess implementieren, der einen Socket-Server implementiert, der aus dem Socket liest und in der Datei protokolliert. (Wenn Sie möchten, können Sie einen Thread in einen der vorhandenen Prozesse einfügen, um diese Funktion auszuführen.) Dieser Abschnitt dokumentiert diesen Ansatz detaillierter und enthält einen funktionierenden Socket-Empfänger, der als Ausgangspunkt für die Anpassung in Ihrem System verwendet werden kann eigene Anwendungen.
Ссылка
Wenn eine kleine Ladung hatte alles funktioniert perfekt, aber mit seiner Zunahme habe ich das Problem konfrontiert.

    
shaihulud 02.06.2014, 08:32
quelle
5

Es ist möglich, dass im Hintergrund Sellerie-Prozesse laufen, Relikte von früheren Starts, die nicht ordnungsgemäß heruntergefahren wurden und die Nachrichten verschlingen könnten. versuchen Sie zu sehen, ob Sie solche Arbeiter haben, indem Sie

ausführen

ps aux | grep celery

in der Befehlszeile. Der folgende Befehl wird automatisch alle diese Waisen Sellerie Arbeiter für Sie töten:

ps aux | grep celery | awk '{system("kill -9 " )}'

Ich führe es aus, bevor ich meine App starte

    
gilsho 09.05.2014 22:12
quelle

Tags und Links