Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.



07.06.2022

Red Hat Enterprise Linux 9

Red Hat zaprezentował system operacyjny Red Hat Enterprise Linux 9 (RHEL 9)...
07.06.2022

Technologiczna piaskownica

Koalicja partnerów KIR, IBM, Chmura Krajowa, PKO Bank Polski, Urząd Komisji Nadzoru...
07.06.2022

Sztuczna inteligencja w...

OVHcloud wprowadziło na rynek AI Notebooks – najnowszy element w ofercie usług...
07.06.2022

Spójna ochrona brzegu sieci

Fortinet zaprezentował FortiOS 7.2 – najnowszą wersję swojego flagowego systemu...
07.06.2022

Zarządzanie transferem

Firma Progress wypuściła nową wersję oprogramowania do zarządzania transferem plików...
07.06.2022

Notebook ekstremalny

Panasonic przedstawił 14-calowy Toughbook 40, notebook do pracy w ekstremalnych...
07.06.2022

Zestaw startowy dla robotyki

Firma AMD przedstawiła najnowszy produkt w portfolio adaptacyjnych modułów SOM...
07.06.2022

Precyzja kadrowania

Najnowsze rozwiązania klasy pro firmy Poly mają sprostać zmieniającym się potrzebom...
07.06.2022

Serwer klasy korporacyjnej

QNAP zaprezentował nowy model serwera NAS, TS-h1886XU-RP R2, który działa na systemie...

Celery – asynchroniczne zadania w pythonie

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

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"