Czym jest Celery?
Czym jest 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:
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".
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:
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'