Finde heraus, ob Sellerie verfügbar ist / läuft
Ich bin mit Sellerie asynchrone Aufgaben zu verwalten. Gelegentlich ist jedoch die Sellerie-Prozess geht nach unten, die bewirkt, dass keine der Aufgaben ausgeführt werden. Ich möchte in der Lage sein zu überprüfen, den status von Sellerie und stellen Sie sicher, alles ist in Ordnung, und wenn ich erkennen, keine Probleme mit der Bildschirmanzeige eine Fehlermeldung an den Benutzer. Aus dem Sellerie Arbeiter Dokumentation es sieht aus wie ich möglicherweise in der Lage sein zu verwenden ping oder inspizieren für diese, aber ping fühlt sich hacky und es ist nicht klar, wie genau inspizieren verwendet werden soll (wenn inspect().eingetragene() ist leer?).
Alle Informationen zu diesem würde geschätzt. Im Grunde, was ich Suche, ist eine Methode, etwa so:
def celery_is_alive():
from celery.task.control import inspect
return bool(inspect().registered()) # is this right??
EDIT: Es sieht nicht einmal wie registriert() zur Verfügung, die auf Sellerie 2.3.3 (obwohl der 2.1-docs Liste). Vielleicht ping ist die richtige Antwort.
EDIT: Ping ist auch nicht angezeigt, das zu tun, was ich dachte, es tun würde, so ist noch nicht sicher sind, hier die Antwort.
InformationsquelleAutor der Frage Cory | 2011-12-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist der code, den ich benutzt habe.
celery.task.control.Inspect.stats()
gibt ein dict mit vielen Informationen über die derzeit verfügbaren Arbeitnehmer, Keine, wenn es keine Arbeitskräfte zu laufen, oder wirft eineIOError
wenn es kann keine Verbindung zum message-broker. Ich bin mit RabbitMQ - es ist möglich, dass andere messaging-Systeme möglicherweise Verhalten sich etwas anders. Dieser arbeitete in Sellerie 2.3.x und 2.4.x; ich bin nicht sicher, wie weit es zurück geht.InformationsquelleAutor der Antwort Chris Chamberlin
To check die gleichen mit Befehl Linie im Falle Sellerie läuft als daemon,
celery -A [app_name] status
Quelle:
http://michal.karzynski.pl/blog/2014/05/18/setting-up-an-asynchronous-task-queue-for-django-using-celery-redis/
InformationsquelleAutor der Antwort akashbw
Folgendes bei mir funktioniert:
InformationsquelleAutor der Antwort Sergey K