2016-03-28 26 views
5

Ich habe gerade Sellerie installiert und ich möchte eine einfache Statusseite erstellen, die die aktuelle Anzahl der Arbeiter und ihren Status anzeigt.Sellerie/Django - Wie man Arbeiterstatus programmatisch sieht

Ist das möglich? Von Web-Suchen die beste, die ich fand, war celery.current_app.control.inspect()

Aber soweit ich sehen kann, erwähnt es nichts über Arbeiter. (Ich verwende Kombu mit SQS für das Backend, wenn das wichtig ist)

+0

Warum nicht https://github.com/mher/flower verwenden? Sogar offizielle Celery-Dokumente empfehlen es (http://docs.selleryproject.org/en/latest/userguide/monitoring.html?highlight=flower#flower-real-time-sellery-web-monitor). –

+0

Blume sieht gut aus, aber für meine Schweinswale muss ich dies in einen internen System-Health-Check stecken. Also muss ich es programmatisch machen. – Greg

+1

Dann müssen Sie Blume verlängern. – TheGreenGoblen

Antwort

7

In the documentation of celery workers wird die Ausgabe der inspect Befehle erklärt.

Standardmäßig wird mit celery.current_app.control.inspect() ein "Inspector-Objekt" zurückgegeben, mit dem Sie nach dem Status aller aktiven Worker fragen können. Zum Beispiel, wenn Sie diesen Code mit zwei Laufe Arbeitern namens ‚Natter‘ und ‚Schläfer‘ ausführen:

i = celery.current_app.control.inspect() 
    i.registered() 

der Aufruf von i.registered() zurückkehren kann so etwas wie:

{ 
     '[email protected]': ['tasks.add'], 
     '[email protected]': ['tasks.sleeptask'], 
    } 

Im Ergebnis des „Inspektor“ Methoden registered, active, scheduled usw. geben ein Wörterbuch mit den Ergebnissen zurück, die von den ausgewählten Arbeitern beim Aufruf von celery.current_app.control.inspect() klassifiziert wurden (wenn keine Arbeiter als Argumente übergeben werden, werden alle Arbeiter implizit ausgewählt).

+0

Das sieht vielversprechend aus. Es ist jedoch seltsam, wenn ich anrufe, dass ich einen SQS-Authentifizierungsfehler erhalte. Auch wenn meine App und die Mitarbeiter sich gut verbinden können. Vielleicht erfordert dieser Anruf eine zusätzliche Berechtigung für die SQS-Warteschlange? – Greg

+0

Hier ist der Fehler: SQSError: SQSError: 403 Forbidden AbsenderAccessDenied Zugriff auf die Ressource https://queue.amazonaws.com/ verweigert. 37b59c-ee-aa5c-faeb0ecba29f Greg

+0

Es scheint, dass es noch nicht unterstützt werden kann: [SQS noch keine Arbeiter Fernbedienungsbefehle unterstützen] (http://docs.celeryproject.org/en /latest/getting-started/brokers/sqs.html#caveats). –