Was ist Redis -Warteschlange

Was ist Redis -Warteschlange
Redis ist ein kostenloser und open-Source-In-Memory-Schlüsselwertdatenspeicher. Sie können Redis als Datenbank, einen Cache für andere Datenbanken oder einen Nachrichtenbroker verwenden.

In diesem Handbuch werden Aufgabenwarteschlangen in Redis mithilfe der Python Redis Queue Library implementiert.

Was ist Redis -Warteschlange?

Python Redis Queue oder RQ ist eine einfache, aber leistungsstarke Python -Bibliothek, die mit Redis funktioniert, um Aufgabenques und Ausführung im Hintergrund mit Arbeitern durchzuführen. RQ ist für Anfänger unkompliziert, aber immer noch sehr leistungsfähig für große Projekte.

Das Merkmal von Warteschlangenaufgaben ist für die Arbeit mit Funktionen und Code von wesentlicher Bedeutung, die die Programmausführung blockieren. Ein Beispiel für einen solchen Code sind Netzwerkanforderungen.

Lassen Sie uns diskutieren, wie wir dieses Tool verwenden können.

Umgebungsaufbau

Bevor wir fortfahren können, müssen Sie sicherstellen, dass Sie eine gute Umgebung haben. Hierzu benötigen Sie eine laufende Version des Redis -Servers Python 3 und PIP, die installiert sind.

Wir werden die Installation und das Einrichten eines Ubuntu -Systems veranschaulichen.

Starten Sie mit den Paketen und installieren Sie den Redis -Server mit den unten angegebenen Befehlen:

sudo apt-Get-Update
sudo apt -get install redus -y

Starten Sie nach Abschluss den Redis -Server mit dem Befehl:

Sudo Service Redis-Server-Start

Der nächste Schritt ist die Installation von Python3 und Pip in unserem System. Wenn Sie Python installiert haben.

sudo apt-get installieren Sie Python3.9 Python3 -Pip -y

Als nächstes installieren Sie PIP die RQ -Bibliothek.

sudo pip3 install RQ installieren

Der obige Befehl lädt die RQ -Bibliothek herunter und installiert und wir können sie verwenden.

Arbeiten mit der Redis -Warteschlange

Um die Verwendung der RQ -Bibliothek zu veranschaulichen, werden wir eine einfache HTTP -Anforderung verwenden. In unserem Beispiel werden wir eine einfache Funktion erstellen, die einen API -Aufruf zum IPIFY erstellt.Org und erhalten Sie unsere aktuelle IP -Adresse. Die Funktion macht eine HTTP -Anforderung an den Server, dh sie ist eine Blockierungsfunktion.

Erstellen Sie eine einfache Python -Datei und nennen Sie sie IP.py. Geben Sie als Nächstes den Code ein::

Anfragen importieren
Def get_ip (URL):
Antwort = Anfragen.Get (URL).JSON ()
Rückgabeantwort
print (get_ip ("https: // api.ipify.Org?format = json ")))

Der obige Code gibt Ihre aktuelle IP -Adresse zurück. Sie werden feststellen, dass die Auflösung der Anfrage einige Sekunden dauert und der Server zum Ansprechen ist. Dies bedeutet, dass der Rest des Codes bis zur Ausführung dieses Blocks blockiert wird.

Eine Beispielantwort aus dem obigen Code ist wie gezeigt:

'ip': '185.156.46.41 '

Um zu verhindern, dass die Funktion die Programmausführung blockiert, können wir sie an RQ übergeben, was als asynchrone Aufgabe verarbeitet werden kann.

Wir können dies tun, indem wir die RQ -Bibliothek importieren, eine einfache Warteschlange erstellen und unsere Blockierungsfunktion aufstellen.

Erstellen Sie eine einfache Python -Datei und nennen Sie sie print_ip. Geben Sie den Code wie gezeigt ein:

von Redis Import Redis
Aus RQ Import -Warteschlange
vom IP -Import get_ip
Q = Warteschlange (Verbindung = Redis ())
Ergebnis = q.enqueue (get_ip, "https: // api.ipify.Org?format = json ")

Speichern und schließen Sie die Datei.

Wir müssen einen Arbeiter in unserem Arbeitsverzeichnis durchführen, um die auftretenden Aufgaben im Hintergrund zu bearbeiten.

Ein Arbeiter ist ein Python -Prozess, der im Hintergrund ausgeführt wird, um Blockierungsaufgaben im Code auszuführen. RQ verwendet die Funktionalität der Arbeiter, um Enquoed -Aufgaben auszuführen.

Um den Code im vorherigen Beispiel auszuführen, öffnen Sie ein neues Terminalfenster und navigieren Sie zu Ihrem Arbeitsverzeichnis (in dem sich der Python -Code befindet).

Führen Sie als nächstes den folgenden Befehl aus, um den Arbeiter zu starten.

RQ-Arbeiter-mit Scheduler

Der obige Befehl sollte den Arbeiter wie gezeigt starten:

Wenn Sie keinen Scheduler benötigen, können Sie die Option -mit Scheduler entfernen.

Sobald der Arbeiter ausgeführt wird, führen Sie den Code aus:

python3 print_ip.py

Sie sollten nun die Informationen zu den im Arbeiterfenster gedruckten Aufgaben wie gezeigt sehen:

Um genaue Informationen über die nicht blockierende Funktion dieser Funktion zu erhalten, können Sie versuchen, danach eine Reihe von Druckanweisungen hinzuzufügen.

Sie werden feststellen, dass die Druckanweisungen unmittelbar nach der Ausführung der Datei gedruckt werden, obwohl die Anfragen eine Weile zur Verarbeitung dauern.

Abschluss

Dieser Leitfaden führt Sie durch die Grundlagen der Arbeit mit der Redis -Warteschlange. Obwohl wir einfache Beispiele in diesem Handbuch verwenden, bietet es Ihnen hoffentlich einen Ausgangspunkt, um komplexere Optionen zu implementieren. Überlegen Sie die RQ -Dokumentation, um mehr zu erfahren.