1 grudnia 2021

Czym jest Celery?

Czym jest Celery?

Celery

W skrócie, Celery to wygodne rozwiązanie do kolejkowania zadań określonych interwałem czasowym jak i konkretną datą lub godziną. Inaczej mówiąc, biblioteka Celery pozwala na wykonywanie zadań o określonej dacie lub co pewien stały "kawałek" czasu. A wszystko to w sposób zorganizowany i asynchroniczny.

Głownie Celery skupia się na operacjach zadań w czasie rzeczywistym, a to za sprawą skutecznego ich planowania. Biblioteka dostępna jest na licencji open source. 

Plusy kolejki Celery są następujące:

  • Jest prosta w użyciu i nie wymaga plików konfiguracyjnych. Jest również łatwa do zastosowania we frameworkach,
  • Skuteczność - automatycznie ponawia zdarzenia w przypadku utraty połączenia lub innych błędów,
  • Szybkość - za sprawą szybkich baz danych, które pozwalają na szybką wymianę informacji Celery pozwala przetwarzać miliony zadań na sekundę,
  • Uniwersalność Celery wynika z tego, że niemal każdą dostępną funkcje da się rozszerzyć.

celery django

Kiedy stosować Celery

Biblioteka Celery jest przystosowana do obsługi kolejek asynchronicznych. Oznacza to, że możemy kolejkować zadania (tzw. taski), które będą wykonywać się od siebie niezależnie. "Taski" można dzielić na te ważniejsze i te mniej ważne, czyli nadawać im priorytety. Celery zapewnia również możliwość wielokrotnego powtórzenia "tasku", który zgłosił wyjątek.

Kolejkowanie jest bardzo przydatne w takich przypadkach jak zbieranie danych, lub gdy użytkownik nie wymaga natychmiastowego rezultatu swojego działania. Na przykład, wyobraźmy sobie, że zbieramy ogłoszenia nieruchomości z dowolnej strony. Nie jest ważna kolejność pobierania ogłoszeń, a jedynie fakt, aby było ich możliwie dużo. Ponad to, musimy użyć kilku serwerów proxy, które jak wiemy niestety bywają awaryjne. W takim przypadku doskonałym rozwiązaniem jest właśnie kolejkowanie. Każde ogłoszenie będzie wprowadzone do kolejki pobrań. Kolejno biblioteka będzie realizować zadania w różnym tempie i powtarzać pobieranie danego ogłoszenia w przypadku błędów połączenia lub innych problemów. Oczywiście ilość wykonywanych pobrań w jednym czasie jest sztywno określana w zależności od zasobów serwera. A działanie kolejki możemy śledzić na żywo. Bardzo wygodne, prawda?

Są jednak sytuacje, gdzie nie zawsze warto stosować Celery, ponieważ nie jest to "lek na wszystko". Na przykład warto zrezygnować z Celery dla najprostszych zadań CRON. Jeżeli chcemy usunąć logi z serwera raz na dobę - nie warto wyciągać tak ciężkiego działa jak Celery, ponieważ nie jest ono potrzebne, a pochłania zasoby serwera. Warto wspomnieć, że Celery wymaga również szybkiej bazy danych (zwykle stosuje się bazę Redis). Nie będziemy stosować również Celery, gdy użytkownik potrzebuje odpowiedzi "natychmiast".

Celery + Django

Biblioteka jest napisana w Python i świetnie nadaje się do zastosowania z frameworkami takimi jak Django. Aktualnie Django posiada własny dodatek z Celery o nazwie django-celery-beat.

Instalacja django-celery-beat wygląda następująco:
$ pip install -U django-celery-beat

Następnie należy dodać django_celery_beat do pliku Settings.py tak jak poniżej:
INSTALLED_APPS = [ 'django_celery_beat', ... ]

Należy utworzyć migracje: python manage.py migrate django_celery_results Od tej pory w panelu administratora Django pojawią się encje:

  • Clocked
  • Crontabs
  • Intervals
  • Periodic tasks
  • Solar events

Do konfiguracji Settings.py należy dodać jeszcze dane do bazy Redis, na przykład (port może być inny!):

CELERY_BROKER_URL = 'redis://127.0.0.1:8890'

 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

KEYWEB

Keyweb to nowoczesny software house - tworzymy i rozwijamy produkty informatyczne dla klientów z całego świata.
KONTAKT
keyweb@keyweb.pl
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram