2016-05-03 6 views
3

Ich verwende Sellerie mit Redis.Wie überprüfen, ob Sellerie Ergebnis Backend funktioniert

Aktuelle Redis wird als Broker und als Ergebnis Backend verwendet.

BROKER_TRANSPORT = 'redis' 
BROKER_URL = 'redis://domain:8888/0' 
CELERY_RESULT_BACKEND = 'redis://domain:8888/0' 

möchte ich einige Dinge klären

  1. Was ist der Nutzen des Verwendens Ergebnis Backend ist. Ich meine, was ich bekommen werde, indem ich es verwende
  2. Wie kann ich sehen, dass es funktioniert. Ich meine, wird etwas in redis gespeichert werden. Wll dieser Speicher ist dauerhaft. Wie kann ich das abfragen? Wird das Lager mit der Zeit usw. wachsen
  3. kann ich das Ergebnis Backend-Material mit

Antwort

3

Ein Ergebnis Backend Sellerie Blume überwachen genau das, was es klingt wie, alle es tut, ist Speicher ergibt sich aus Aufgaben.

Angenommen, Sie haben die folgende Aufgabe, die tatsächlich einen Wert zurückgibt.

@task 
def sum(x, y): 
    return x + y 

An einem bestimmten Punkt rufen Sie diese Aufgabe. Wenn Sie kein Ergebnis-Backend haben, wird get() einen Fehler ausgeben (oder eine Warnung, ich vergesse was). Wenn Sie ein Ergebnis-Backend haben (und davon ausgehen, dass es korrekt konfiguriert ist), ruft task.get() Ihr Redis-Backend nach einem Ergebnis von task_id ab, das mit task verknüpft ist, und sendet es dann über den von Ihnen angegebenen Serializer an Sie zurück.

from tasks import sum 

task = sum.delay(3, 4) 
task.get() 

können Sie sehen, dass es nur durch Aufruf get() funktioniert (und wartet bis zur Fertigstellung) auf eine Aufgabe, die Sie an den Broker abgeschickt haben. Sie können mehr über die Arbeit mit celery results from the official documentation lesen.

Sie können Ihre redis-Datenbank grundsätzlich von der redis-cli abfragen, aber ich sehe keinen Grund dazu. Sie können Ergebnisse in Blüte anzeigen, indem Sie zu einer der tatsächlichen Detailansichten der Aufgabe gehen und das Feld "Ergebnis" in der Tabelle "Grundlegende Aufgabenoptionen" überprüfen. z.B. http://flower.myserver.com/task/

+0

Danke Tu, ich habe das. Eine Sache, die mir nicht klar ist, wo speichert der Sellerie alle diese Einbildungen wie task_id, welcher Arbeiter wurde diese Aufgabe ausgeführt usw. Geht es in Redis? Ist diese Information permanent> Weil ich sehe, dass, wenn ich Sellerie-Blume neu starte, dann alle Aufgaben im Aufgabenregister weg sind. Es sieht so aus, dass diese Information nicht persistent ist – Karl

+0

Ja, es ist alles im Broker gespeichert. In Ihrem speziellen Fall scheint dies eine Redis-Datenbank zu sein, die eine In-Memory-Datenbank ist. Diese Information ist in der Tat nicht persistent (per Design!) Wenn Sie Ihre redis-Datenbank persistieren wollen, lesen Sie, wie man das in der [redis-Dokumentation bezüglich Redisperisten] (http://redis.io/topics/ Beharrlichkeit). Wenn Persistenz ein großer Teil Ihres Anwendungsfalls sein wird, sollten Sie sich einen robusteren Broker wie RabbitMQ ansehen, der mehr involviert ist, aber Daten in der Warteschlange bei abrupten Shutdowns erhalten kann. – Thtu

+0

Denkst du, es macht Sinn, dass ich meinen Aufgabenstatus manuell in der Datenbank im Code zur Ausführung der Aufgabe ablege, um den vollständigen Verlauf der Ereignisse zu sehen. Wenn ich dann eine Task-ID aus Log-Nachrichten überprüfe, kann ich die entsprechenden Schritte sehen , Ergebnisse usw. direkt aus der Datenbank – Karl

Verwandte Themen