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



29.10.2021

Veritas po raz 16. liderem...

Firma Veritas Technologies, producent uznanych rozwiązań backup klasy enterprise,...
21.10.2021

Zarządzanie IT

We wrześniu BTC Sp. z o.o. zaprezentowała premierową wersję systemu eAuditor V8 AI.
21.10.2021

Konferencja VMworld

Imagine That. Pod takim hasłem w dniach 5–7 października 2021 r. odbyła się jedna z...
21.10.2021

Darmowy deszyfrator

Bitdefender wspólnie z organami ścigania opracował i wydał narzędzie, które pozwala...
21.10.2021

Dell C1422H

Dell Technologies wprowadza do oferty przenośny monitor do zwiększenia wydajności pracy w...
21.10.2021

Dysk dla cyfrowych twórców

Western Digital zaprezentowało nowy dysk – WD Blue SN750 NVMe SSD.
21.10.2021

Projektory laserowe

Optoma wprowadza serię projektorów laserowych Ultra Bright ZU1700, ZU1900, ZU2200 z...
21.10.2021

Orzeł wśród routerów

D-Link wprowadza na rynek smart router EAGLE PRO AI AX1500 R15.
21.10.2021

Nowe generacje Ryzen i Epyc

AMD 3D V-Cache. AMD zapowiada procesory Ryzen i Epyc z nowym rozwiązaniem.

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.

prenumerata Numer niedostępny Spis treści

.

Transmisje online zapewnia: StreamOnline

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