IT Biblioteka

Celery

Znany też jako:Celery task queuedistributed task queue Python

Definicja #

Celery to framework open-source do asynchronicznego przetwarzania zadań w Pythonie, oparty na wzorcu kolejki komunikatów (message queue). Architektura systemu składa się z trzech elementów: producenta (aplikacja dodająca zadania), brokera (Redis lub RabbitMQ przechowujący kolejkę) oraz workera (proces Celery wykonujący zadania).

Celery obsługuje task scheduling (Celery Beat — cron-like scheduler), retry logic z eksponencjalnym backoff, priorytety zadań, grupowanie (chain, group, chord) oraz monitoring przez Flower (dashboard webowy). Wspiera wielowątkowość i wieloprocesowość.

Integracja z Django odbywa się przez pakiet django-celery-results (przechowywanie wyników w bazie) i django-celery-beat (dynamiczny scheduler). W ekosystemie Python, Celery jest de facto standardem — alternatywy to RQ (Redis Queue) i Dramatiq.

Zastosowania #

  • Wysyłanie emaili i powiadomień w tle (bez blokowania odpowiedzi HTTP)
  • Przetwarzanie plików — konwersja obrazów, generowanie PDF, parsowanie CSV
  • Cykliczne zadania — raporty, synchronizacje danych, czyszczenie bazy (Celery Beat)
  • Integracje z zewnętrznymi API — webhoki, płatności, eksport danych
  • Przetwarzanie ML — trening modeli, batch inference w tle

Ścieżka nauki #

Naukę Celery zacznij od podstaw — zainstaluj Redis jako broker i utwórz pierwsze zadanie w prostej aplikacji Python. Oficjalna dokumentacja (docs.celeryq.dev) jest wyczerpująca i zawiera przykłady dla Django i Flask.

Kluczowe zagadnienia do opanowania: definiowanie tasków (dekorator @app.task), uruchamianie asynchroniczne (.delay(), .apply_async()), obsługa błędów i retry, Celery Beat do zadań cyklicznych oraz monitorowanie przez Flower. Warto też poznać skalowanie workerów i konfigurację concurrency (prefork vs. gevent). Praktyczne projekty: system wysyłania emaili, periodic task do synchronizacji danych z API.

FAQ #

Jaki broker wybrać — Redis czy RabbitMQ?
Redis jest prostszy w konfiguracji i wystarczający dla większości zastosowań — jest też używany jako backend wyników. RabbitMQ oferuje bardziej zaawansowane funkcje routingu wiadomości (exchanges, bindings) i jest lepszy przy złożonych topologiach. W Django projektach Redis jest najczęstszym wyborem.
Jak monitorować Celery?
Najpopularniejszym narzędziem jest Flower — webowy dashboard pokazujący status workerów, historię tasków i statystyki. Dostępny przez pip install flower. Alternatywnie można użyć django-celery-results do przechowywania wyników w bazie danych Django.
Czy Celery działa z FastAPI?
Tak — Celery można integrować z FastAPI podobnie jak z Flask. Zadania są definiowane osobno od aplikacji FastAPI i uruchamiane przez .delay() lub .apply_async(). Warto rozważyć też nowsze alternatywy jak ARQ (async Redis Queue) projektowane z myślą o async Python.
Co to jest Celery Beat?
Celery Beat to scheduler uruchamiający zadania cyklicznie — działa jak cron, ale zintegrowany z Celery. Pozwala definiować zadania wykonywane co określony czas (np. co godzinę, raz dziennie) bezpośrednio w konfiguracji Pythona lub przez django-celery-beat w bazie danych.
Ostatnia aktualizacja:

Powiązane hasła

Technologie i biblioteki, które najczęściej pojawiają się razem z Celery w ogłoszeniach.

Cały słownik IT

Przeglądaj słownik IT alfabetycznie

Wybierz literę, aby zobaczyć wszystkie hasła zaczynające się od niej.