In meinem Django-Projekt verwende ich Sellerie und Rabbitmq, um Aufgaben im Hintergrund auszuführen. Ich benutze Sellerie Beat Scheduler, um periodische Aufgaben auszuführen. Wie kann ich überprüfen, ob Sellerie-Beat programmgesteuert läuft?Prüfe, ob Sellerie schlägt und läuft
Antwort
Sie können Scheduler Lauf überprüfen oder nicht durch den folgenden Befehl
python manage.py celery worker --beat
Sind Sie Emporkömmling oder supervison oder etwas anderes nutzen Sellerie Arbeiter + Sellerie schlagen als Hintergrund-Tasks ausführen? In der Produktion sollten Sie einen von ihnen verwenden, um Sellerie Arbeiter + Sellerie im Hintergrund zu laufen.
Einfachste Art zu überprüfen, Sellerie Beat läuft: ps aux | grep -i '[c]elerybeat'
. Wenn Sie Textzeichenfolge mit pid
erhalten, wird es ausgeführt. Sie können auch die Ausgabe dieses Befehls hübscher machen: ps aux | grep -i '[c]elerybeat' | awk '{print $2}'
. Wenn Sie Nummer bekommen - es funktioniert, wenn Sie nichts bekommen - es funktioniert nicht.
Auch können Sie Sellerie Arbeiter Status überprüfen: celery -A projectname status
.
Wenn Sie in fortgeschrittenen Sellerie-Monitoring interessiert sind, können Sie offizielle Dokumentation monitoring Leitfaden lesen.
Das ist jedoch nicht programmatisch – guival
Wenn Sie Sellerie nach dem Tutorial des celery doc daemonisierte haben, zu überprüfen, ob es oder nicht läuft, kann durch
sudo /etc/init.d/celeryd status
sudo /etc/init.d/celerybeat status
Sie können die Rückgabe solcher Befehle in einem Python-Modul verwenden, durchgeführt werden.
Sie können wahrscheinlich supervisor nachschlagen. Es bietet eine celerybeat conf, die alles in Bezug auf Beat in /var/log/celery/beat.log
protokolliert.
Eine andere Möglichkeit, dies zu umgehen, ist die Verwendung Flower. Sie können es für Ihren Server einrichten (stellen Sie sicher, dass es passwortgeschützt ist), es wird etwas leichter in der GUI zu erkennen, welche Aufgaben in der Warteschlange stehen und wann sie in die Warteschlange gestellt werden, um zu überprüfen, ob Ihr Beat gut läuft.
Warum möchten Sie das tun? Möchten Sie überprüfen, bevor Sie eine Aufgabe senden? –
Ein Grund wäre Failover zu starten, wenn Selleriebeat nicht läuft. Es scheint keinen akzeptierten Weg zu geben, dies zu erreichen. –
Wenn ja, dann besser 'supervisord' oder etwas ähnliches zu verwenden. – trinchet