Celery je implementace fronty úloh pro webové aplikace v jazyce Python, která se používá k asynchronnímu vykonávání práce mimo cyklus HTTP požadavek-odpověď.
Proč je Celery užitečný?
Fronty úloh a zejména implementace Celeryjsou jednou z nejsložitějších částí zásobníku webových aplikací v jazyce Python.
Jestliže jste mladší vývojář, může vám být nejasné, proč je důležité přesouvat tréninky mimo cyklus požadavek-odpověď HTTP. Stručně řečeno, chcete, aby váš server WSGI odpovídal na příchozí požadavky co nejrychleji, protože každý požadavek váže pracovní proces, dokud není dokončena odpověď. Přesunutí práce mimo tyto pracovníky spuštěním asynchronních úloh jako úloh ve frontě je jednoduchý způsob, jak zlepšit dobu odezvy serveru WSGI.
Jaký je rozdíl mezi Celeryd a Celerybeat?
Celery lze použít ke spouštění dávkových úloh na pozadí podle pravidelného plánu. Klíčovým konceptem v Celery je rozdíl mezi démonemCelery (celeryd), který vykonává úlohy, Celerybeat, což je plánovač. Představte si Celeryd jako tunelovou sadu jednoho nebo více workerů, kteří zpracovávají jakékoli úlohy, které před ně postavíte. Každý pracovník provede úkol, a když je úkol dokončen, převezme další úkol. cyklus se opakuje nepřetržitě, pouze nečinně čeká, až před něj nebudou postaveny další úkoly.
Celerybeat je naproti tomu jako šéf, který sleduje, kdy mají být úkoly provedeny. Vaše aplikace může Celerybeatu říct, aby provedl úlohuv časových intervalech, například každých 5 sekund nebo jednou týdně. Celerybeat lze také instruovat, aby spouštěl úlohy v určitý den nebo čas, například každou neděli v 17:03. Po dosažení intervalu nebo konkrétního času předá Celerybeat úlohu Celerydu, aby ji provedl na dalším dostupném pracovníku.
Celery je mocný nástroj, který může být zpočátku obtížné pochopit. Určitě si přečtěte něco o konceptu fronty úloha pak se ponořte do těchto konkrétních výukových programů Celery.
-
A 4 Minute Intro to Celery isa short introductory task queue screencast.
-
Tato série blogových příspěvků o architektuřeCelery,Celery in the wild: tips and tricks to run async tasks in the real worldadealing with resource-consuming tasks on Celeryposkytují skvělý kontext toho, jak Celery funguje a jak zvládnout některé složitější části práce s frontou úloh.
-
Jak používat Celery s RabbitMQje podrobný návod pro použití těchto nástrojů na VPS Ubuntu.
-
Celery – osvědčené postupyvysvětluje věci, které byste s Celery neměli dělat, a ukazuje některé málo používané funkce pro usnadnění práce s frontami úloh.
-
Celery – osvědčené postupyje jiný autor navazující na výše uvedený příspěvek o osvědčených postupech, který staví na některých vlastních poznatcích z více než tříletého používání Celery.
-
Obvyklé problémy při používání Celery (a jiných front úloh)obsahuje dobré rady, jak se vyvarovat chyb v konfiguraci úloh,například používání databázových transakcí a opakování neúspěšných úloh.
-
Asynchronní zpracování ve webových aplikacích – první část a druhá část jsou skvělým čtením pro pochopení rozdílu mezi frontou úloh a proč byste neměli používat databázi jako frontu.
-
My Experiences With A Long-Running Celery-Based Microprocessgives some good tips and advice based on experience with Celery workersthat a long time to complete their jobs.
-
Seznam kontrol pro vytvoření skvělých asynchronních úloh Celeryje stránka speciálně navržená tak, aby vám poskytla seznam správných postupů, kterými se můžete řídit při návrhu konfigurace fronty úloh a nasazení do vývojového, stagingového a produkčního prostředí.
-
Heroku píše o tom, jak zabezpečit Celery, když se jinak úlohy posílají přes nešifrované sítě.
-
Testování úloh Celeryvysvětluje tři strategie testování kódu v rámci funkcí, které Celeryvykonává. Příspěvek dochází k závěru, že synchronní volání úloh Celery za účelem jejich testování je nejlepší strategií bez jakýchkoli nevýhod. Mějte však na paměti, že jakýkoli způsob testování, který není shodný s tím, jak se funkce bude vykonávat v produkčním prostředí, může potenciálně vést k přehlédnutí chyb. K dispozici je také otevřený repozitář Git se všemi zdrojovými kódy z příspěvku.
-
Monitorování Celery pomocí Rollbaru v aplikaci Djangovysvětluje, jak používat Rollbar k monitorování úloh. Superužitečné, když pracovníci bez zjevné příčiny neustále umírají.
-
3 Gotchas pro práci s Celeryjsou věci, které je třeba mít na paměti, když jste nováčkem v implementaci fronty úloh Celery.
-
Dask a Celeryporovnává Dask.distributed s Celery pro projekty v Pythonu. Příspěvek uvádípříklady kódu, které ukazují, jak provádět úlohy s oběma frontami úloh.
-
Python+Celery:
Celery s webovými frameworky
Celery se obvykle používá s webovým frameworkem, jako jeDjango, Flask nebo Pyramid.Tyto zdroje ukazují, jak integrovat frontu úloh Celery s vybraným webovým frameworkem.
-
Jak používat Celery a RabbitMQ s Djangoje skvělý návod, který ukazuje instalaci i nastavení základní fronty úloh s Django.
-
Miguel Grinberg napsal pěkný příspěvek o použití fronty úloh Celery s Flaskem. uvádí přehled Celery a následně konkrétní kód pro nastavení fronty úloh a její integraci s Flaskem.
-
Nastavení asynchronní fronty úloh pro Django pomocí Celery a Redisis přímočarý návod pro nastavení fronty úloh Celery pro webové aplikace Django s využitím zprostředkovatele Redis na zadní straně.
-
Průvodce odesíláním naplánovaných zpráv e-mailem pomocí Django a Celeryukazuje, jak použítjango-celeryve své aplikaci. Všimněte si však, že existují i jiné způsoby integraceCelery s Django, které nevyžadují závislost django-celery.
-
Flask asynchronní úlohy na pozadí s Celery a Rediskombinuje Celery s Redis jako brokerem aFlask pro framework příkladové aplikace.
-
Celery a Django a Docker: ukazuje, jak vytvořit úlohy Celery pro Django v kontejneru Docker. Poskytuje také některé
-
Asynchronní úlohy s Django a Celeryukazuje, jak integrovat Celery s Django a vytvářet periodické úlohy.
-
Začínáme plánovat úlohy s Celeryje podrobný návod pro nastavení Celery s Django (ačkoliCelery lze bez problémů používat i s jinými frameworky).
-
Představení Celery pro Python+Djangopředstavuje úvod do fronty úloh Celery s Django jako zamýšleným frameworkem pro tvorbu webové aplikace.
-
Asynchronní úlohy s Falconem a Celerykonfiguruje Celery s frameworkem Falcon, který se ve webových tutoriálech používá méně často.
-
Vlastní stavy úloh Celeryje pokročilý příspěvek o vytváření vlastních stavů, který je užitečný zejména pro přechodné stavy ve vaší aplikaci, které nejsou pokryty výchozí konfigurací Celery.
-
Asynchronní úlohy s Django a Celerypojednává o tom, jak nakonfigurovat Celery pro zpracování dlouhotrvajících úloh v aplikaciDjango.
Zdroje nasazení Celery
Celery a jeho zprostředkovatel běží odděleně od webových serverů a serverů WSGI, takže přidává další složitost nasazení. Následující zdroje vás provedou tím, jak s nasazením zacházet a jak správně nastavit konfiguraci.
-
Seriál „Django in Production“ odRoba Goldinga obsahuje příspěvek speciálně věnovaný úlohám na pozadí.
-
Jak spustit Celery jako démona? je krátký příspěvek s minimálním kódem pro spuštění démona Celery aCelerybeat jako systémových služeb v Linuxu.
-
Celery in Productionna blogu Caktus Group obsahuje osvědčené postupy z jejich zkušenostípoužívání Celery s RabbitMQ, monitorovacími nástroji a dalšími aspekty, o kterých se v existující dokumentaci často nehovoří.
-
Tři rychlé tipy za dva roky s Celeryposkytuje několik solidních rad ohledně zpoždění opakování, příznaku
-Ofair
a časových limitů globálních úloh pro Celery.