Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.
Data publikacji: 23-09-2021 | Autor: | Marcel Kamiński |
Synchroniczne wykonywanie zadań oznacza, że aktualnie wykonywane zadanie musi zostać zakończone, zanim możliwe będzie rozpoczęcie kolejnego. Kiedy zadania wykonywane są asynchronicznie, rozpoczęcie kolejnego zadania nie jest zależne od zakończenia innego.Warto więc prześledzić, jak asynchroniczne wykonywanie zadań przebiega w jednym z najpopularniejszych dziś języków programowania – Pythonie.
Przykładem wykonywania zadań w trybie asynchronicznym może być aplikacja, która wykonuje analizy zawartości stron WWW pod kątem występowania określonych słów. Synchroniczne wykonywanie tego typu zadań wiązałoby się z dużym nakładem czasowym. Aplikacja musiałaby czekać na zakończenie analizy jednej strony, zanim mogłaby rozpocząć analizę kolejnej. W takim przypadku wykonywanie zadań w trybie asynchronicznym nie tylko zwiększa wydajność aplikacji, ale także pozwala na wykonywanie przez nią innych zadań podczas trwania analizy stron.
CELERY
Do zbudowania takiej aplikacji w Pythonie możemy wykorzystać rozwiązanie Celery. Dzięki niemu aplikacja będzie mogła tworzyć kolejkę zadań, które następnie będą wykonywane w tle w zależności od dostępnych zasobów. W największym skrócie Celery do swojej pracy wymaga tzw. brokera, czyli aplikacji kolejkującej zadania, które następnie wykonywane są przez tzw. workery, zaś stan ich wykonania może być zapisywany w zewnętrznej bazie danych (w Celery określanej jako backend). Przykładem brokera mogą być następujące rozwiązania: RabbitMQ, AmazonSQS czy Redis. Do magazynowania wyników można z kolei wykorzystać m.in. Redis, Django ORM, Elasticsearch, MongoDB, Microsoft Azure Cosmos DB.
INSTALACJA
Celery instalujemy za pomocą instalatora PIP, z użyciem komendy:
pip install celery
Po instalacji możemy przejść do instalacji brokera, który będzie zajmował się utrzymaniem kolejki naszych zadań. Musimy pamiętać, że jest to obowiązkowy krok – bez tego Celery nie będzie poprawnie działało.
Na potrzeby niniejszego artykułu posłużymy się brokerem Redis, a to ze względu na jego popularność. Warto jednak pamiętać, co jest zresztą podkreślane także na oficjalnej stronie Celery, że Redis mimo swoich zalet jest podatny na utratę danych, np. w przypadku awarii zasilania. Wynika to z jego charakterystycznej budowy podobnej do pamięci cache. Instalacja Redisa jest dość prosta w przypadku systemów linuksowych:
sudo apt install
redis-server
sudo systemctl enable
redis-server
sudo systemctl start
redis-server
Niestety w przypadku systemów Windows możemy użyć tylko bardzo starej wersji Redisa, która obecnie nie jest wspierana (github.com/microsoftarchive/redis). Nie zawsze będzie ona współpracować poprawnie z Celery, więc nie polecalibyśmy takiego rozwiązania. W przypadku systemów Windows zalecane jest użycie Windows Subsystem for Linux (WSL), dzięki któremu bez problemu zainstalujemy Redisa (więcej pod adresem bit.ly/3A2d5i3). Niestety nie każda maszyna z Windowsem ma możliwość włączenia WSL-a. Polecaną metodą na uruchomienie Redisa na Windowsie jest również użycie gotowego kontenera Dockera, lecz wymaga to już wiedzy związanej z konteneryzacją i samym Dockerem.
[...]
Autor jest studentem informatyki na uniwersytecie w Irlandii, pasjonatem programowania oraz cyberbezpieczeństwa.
Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.
Transmisje online zapewnia: StreamOnline