Ten przewodnik wdroży kolejki zadań w Redis za pomocą biblioteki Python Redis Queue.
Co to jest kolejka Redis?
Python Redis Queue lub RQ to prosta, ale potężna biblioteka Python, która działa z Redis do wykonywania zadań i wykonania w tle za pomocą pracowników. RQ jest prosty w użyciu dla początkujących, ale nadal bardzo potężny dla dużych projektów.
Funkcja zadań w kolejce jest niezbędna podczas pracy z funkcjami i kodem, które mają tendencję do blokowania wykonania programu. Przykładem takiego kodu są żądania sieciowe.
Omówmy, w jaki sposób możemy użyć tego narzędzia.
Konfiguracja środowiska
Zanim będziemy mogli kontynuować, musisz upewnić się, że masz dobre środowisko. W tym celu będziesz potrzebować uruchomionej wersji Redis Server, Python 3 i PIP zainstalowany.
Zilustrujemy instalację i konfigurację w systemie Ubuntu.
Zacznij od aktualizacji pakietów i zainstaluj serwer Redis za pomocą poleceń pokazanych poniżej:
Sudo apt-get Aktualizacja
sudo apt -get install Redis -y
Po zakończeniu uruchom serwer Redis za pomocą polecenia:
Sudo Service Redis-Server Start
Następnym krokiem jest zainstalowanie Python3 i PIP w naszym systemie. Możesz przejść do następnych sekcji, jeśli zainstalowałeś Python.
sudo apt-get instal Python3.9 Python3 -Pip -y
Następnie użyj PIP, aby zainstalować bibliotekę RQ.
sudo pip3 instaluj RQ
Powyższe polecenie pobranie i zainstaluje bibliotekę RQ, a my możemy zacząć ją używać.
Praca z kolejką Redis
Aby zilustrować przy użyciu biblioteki RQ, użyjemy prostego żądania HTTP. W naszym przykładzie utworzymy prostą funkcję, która wywołuje wywołanie interfejsu API do IPIFIF.Org i uzyskaj nasz obecny adres IP. Funkcja składa żądanie HTTP do serwera, co oznacza, że jest to funkcja blokująca.
Utwórz prosty plik Python i nazwij go IP.py. Następnie wprowadź kod jako:
żądania importuPowyższy kod zwróci bieżący adres IP. Zauważysz, że żądanie zajmuje kilka sekund, a serwer do odpowiedzi. Oznacza to, że reszta kodu jest blokowana do momentu wykonania tego bloku.
Przykładową odpowiedzią powyższego kodu jest jak pokazano:
„ip”: '185.156.46.41 'Aby zapobiec blokowaniu funkcji wykonania programu, możemy przekazać ją do RQ, co można przetworzyć jako zadanie asynchroniczne.
Możemy to zrobić, importując bibliotekę RQ, tworząc prostą kolejkę i w kolejce naszą funkcję blokowania.
Utwórz prosty plik Python i nazwij go print_ip. Wprowadź kod jak pokazano:
z Redis Import RedisZapisz i zamknij plik.
Musimy uruchomić pracownika w naszym katalogu roboczym, aby przetworzyć zadania w tle.
Pracownik to proces Python, który działa w tle, aby wykonywać zadania blokujące w kodzie. RQ wykorzystuje funkcjonalność pracowników do wykonywania zadań związanych.
Aby wykonać kod w poprzednim przykładzie, otwórz nowe okno terminalu i przejdź do katalogu roboczego (gdzie znajduje się kod Python).
Następnie wykonaj poniższe polecenie, aby uruchomić pracownika.
RQ Worker--with-SchedulerPowyższe polecenie powinno uruchomić pracownika, jak pokazano:
Jeśli nie potrzebujesz harmonogramu, możesz usunąć opcję -z -scheduler.
Po uruchomieniu pracownika wykonaj kod:
Python3 print_ip.pyPowinieneś teraz zobaczyć informacje o zadaniach wydrukowanych w oknie robotniczym, jak pokazano:
Aby uzyskać precyzyjne informacje o funkcji nie blokującej tej funkcji, możesz spróbować dodać po niej kilka instrukcji drukowania.
Zauważysz, że instrukcje drukowania są drukowane natychmiast po wykonywaniu pliku, pomimo żądań, które zajmują trochę czasu na przetwarzanie.
Wniosek
Ten przewodnik przechodzi przez podstawy pracy z kolejką Redis. Chociaż używamy prostych przykładów w tym przewodniku, miejmy nadzieję, że zapewni Ci to punkt wyjścia do wdrożenia bardziej złożonych opcji. Rozważ odczytanie dokumentacji RQ, aby dowiedzieć się więcej.