A Celery egy task queueimplementáció Python webes alkalmazásokhoz, amely a HTTP kérés-válasz cikluson kívüli aszinkron végrehajtásra szolgál.

A Celery a task queue koncepció implementációja. Tudjon meg többet a webfejlesztés fejezetben, vagy tekintse meg az összes témakör tartalomjegyzékét.

Miért hasznos a Celery?

A feladatsorok és különösen a Celery implementációja a Python webes alkalmazáshalmaz egyik nehezebben érthető része.

Ha junior fejlesztő vagy, nem lehet világos, hogy miért fontos a HTTP kérés-válasz cikluson kívüli munkafolyamatok mozgatása. Röviden, azt szeretné, ha a WSGI-kiszolgálója a bejövő kérésekre a lehető leggyorsabban válaszolna, mivel minden egyes kérés leköt egy munkafolyamatot, amíg a válasz elkészül. A WSGI-kiszolgáló válaszidejének javítására egyszerű módja a munka áthelyezése ezekről a munkásokról az aszinkron feladatok sorba állításával.

Mi a különbség a Celeryd és a Celerybeat között?

A Celery használható kötegelt feladatok rendszeres ütemezésű futtatására a háttérben. A Celery egyik kulcsfogalma a különbség aCelery daemon (celeryd), amely feladatokat hajt végre, a Celerybeat, amely ascheduler. Gondoljon a Celeryd-re úgy, mint egy vagy több munkásból álló alagútlátó készletre, amely bármilyen feladatot elintéz, amit eléjük helyez. Minden munkás végrehajt egy feladatot, és amikor a feladat befejeződött, felveszi a következőt.A ciklus folyamatosan ismétlődik, és csak akkor várakozik tétlenül, amikor már nincs több feladat, amit eléjük lehet tenni.

A Celerybeat viszont olyan, mint egy főnök, aki nyomon követi, hogy mikor kell végrehajtani a feladatokat. Az alkalmazás megmondhatja a Celerybeat-nek, hogy időközönként hajtson végre egy feladatot, például 5 másodpercenként vagy hetente egyszer. A Celerybeat arra is utasítható, hogy a feladatokat egy adott napon vagy időpontban futtassa, például minden vasárnap 17:03-kor. Az intervallum vagy a meghatározott időpont elérésekor a Celerybeat átadja a feladatot a Celerydnek, hogy az a következő szabad dolgozóval hajtsa végre.

Celery oktatóanyagok és tanácsok

A Celery egy hatékony eszköz, amelyet elsőre nehéz lehet eligazodni. Mindenképpen olvasson utána a task queue fogalmaknak, majd merüljön el ezekben a konkrét Celery oktatóanyagokban.

  • A 4 Minute Intro to Celery egy rövid bevezető task queue screencast.

  • A Celery architektúrájáról szóló blogbejegyzés-sorozat, a Celery in the wild: tippek és trükkök aszinkron feladatok futtatásához a való világban és az erőforrás-fogyasztó feladatok kezelése Celery-n nagyszerű kontextust nyújt a Celery működéséről és a task queue-val való munka néhány bonyolultabb részének kezeléséről.

  • How to use Celery with RabbitMQegy részletes útmutató ezen eszközök használatához egy Ubuntu VPS-en.

  • Celery – Legjobb gyakorlatokmagyarázza azokat a dolgokat, amelyeket nem szabad a Celeryvel tennie, és bemutat néhány kihasználatlan funkciót, amelyek megkönnyítik a feladatsorokkal való munkát.

  • Celery Best PracticesEgy másik szerző folytatása a fenti best practices bejegyzésnek, amely a saját, több mint 3 évnyi Celery használat során szerzett tapasztalataira épül.

  • Common Issues Using Celery (And Other Task Queues)jó tanácsokat tartalmaz a feladatkonfigurációkban elkerülendő hibákról, például az adatbázis-tranzakciók használatáról és a sikertelen feladatok újrapróbálásáról.

  • Asynchronous Processing in Web Applications Part One and Part Two (Aszinkron feldolgozás webes alkalmazásokban) nagyszerű olvasmányok a feladatsorok közötti különbség megértéséhez, és hogy miért nem szabad az adatbázist feladatsorként használni.

  • My Experiences With A Long-Running Celery-Based Microprocess (Tapasztalataim egy hosszú futású Celery-alapú mikrofolyamatról) jó tippeket és tanácsokat ad a Celery-munkákkal kapcsolatos tapasztalatok alapján, amelyek sokáig tartanak a feladatok elvégzéséhez.

  • Checklist to build great Celery async tasksEz az oldal kifejezetten arra szolgál, hogy egy listát adjon a követendő jó gyakorlatokról a feladatsor-konfiguráció megtervezésekor és telepítésekor a fejlesztési, staging és termelési környezetekbe.

  • Heroku arról ír, hogyan kell biztosítani a Celery-t, ha a feladatokat egyébként titkosítatlan hálózatokon keresztül küldik.

  • Unit testing Celery taskexplains three strategies for testing code within functions that Celeryexecutes. A bejegyzés arra a következtetésre jut, hogy a Celery taskok szinkron hívása a teszteléshez a legjobb stratégia, amelynek nincsenek hátrányai. Ne feledje azonban, hogy minden olyan tesztelési módszer, amely nem azonos azzal, ahogyan a függvény a termelési környezetben fog futni, potenciálisan figyelmen kívül hagyott hibákhoz vezethet. Van egy nyílt forráskódú Git-tár is a poszt összes forráskódjával.

  • Rollbar monitoring of Celery in a Django appemagyarázza, hogyan használjuk a Rollbar-t a feladatok monitorozására. Szuperhasznos, amikor a munkások változatlanul meghalnak minden látható ok nélkül.

  • 3 Gotchas for Working with Celerya dolgok, amiket szem előtt kell tartanod, ha új vagy a Celery task queueimplementációban.

  • Dask és Celeryösszehasonlítja a Dask.distributed és a Celery for Python projekteket. A poszt kódpéldákat ad arra, hogyan lehet feladatokat végrehajtani mindkét task queue-val.

  • Python+Celery: Chaining jobs?elmagyarázza, hogy a Celery feladatoknak egymástól kell függeniük aCelery láncok segítségével, nem pedig a feladatok közötti közvetlen függőséget.

Celery webes keretrendszerekkel

A Celery-t jellemzően webes keretrendszerrel, példáulDjango, Flask vagy Pyramid segítségével használják.Ezek a források megmutatják, hogyan integrálhatja a Celery task queue-t az Ön által választott webes keretrendszerrel.

  • How to Use Celery and RabbitMQ with Djangois egy nagyszerű bemutató, amely megmutatja, hogyan kell telepíteni és beállítani egy alapfeladatot a Django segítségével.

  • Miguel Grinberg írt egy szép bejegyzést a Celery feladatsorozat Flaskkal való használatáról.Ad egy áttekintést a Celeryről, majd konkrét kódot a feladatsorozat beállításához és Flaskkal való integrálásához.

  • Setting up an asynchronous task queue for Django using Celery and Redisis egy egyszerű bemutató a Celery task queue beállításához aDjango webes alkalmazásokhoz a Redis broker használatával a back end-en.

  • A Guide to Sending Scheduled Reports Via Email Using Django And Celeryshows you how to usedjango-celeryin your application. Vegye azonban figyelembe, hogy vannak más módjai is aCelery és a Django integrálásának, amelyek nem igénylik a django-celery függőséget.

  • Flask aszinkron háttérfeladatok a Celeryvel és a Redisc-kel kombinálja a Celery-t a Redis-szel mint brókerrel ésFlaskkal a példaalkalmazás keretrendszereként.

  • Celery és Django és Docker: Oh My!megmutatja, hogyan hozhatunk létre Celery feladatokat Django számára egy Dockercontaineren belül. Emellett néhány

  • Asynchronous Tasks With Django and Celeryshows megmutatja, hogyan integrálhatjuk a Celery-t a Django mellé és hogyan hozhatunk létre periodikus feladatokat.

  • Getting Started Scheduling Tasks with Celeryegy részletes útmutató a Celery Django melletti beállításához (bár aCelery más keretrendszerekkel is gond nélkül használható).

  • Introducing Celery for Python+Djangoprovide bevezetést nyújt a Celery task queue-ba a Django mint a webalkalmazás építésére szánt keretrendszerrel.

  • Asynchronous Tasks with Falcon and Celeryconfigures Celery with the Falcon framework, which is less commonly-used in web tutorials.

  • Custom Celery task statesEgy haladó bejegyzés az egyéni állapotok létrehozásáról, amely különösen hasznosaz alkalmazás átmeneti állapotaihoz, amelyeket az alapértelmezett Celery-konfiguráció nem fed le.

  • Asynchronous Tasks with Django and Celerylézi meg, hogyan konfigurálhatjuk a Celery-t a hosszú futású feladatok kezelésére egyDjango alkalmazásban.

Celery telepítési erőforrások

A Celery és a bróker külön fut a web és WSGI szerverektől, így némi további komplexitást ad a telepítésekhez. Az alábbi források végigvezetnek a telepítések kezelésén és a megfelelő konfigurációs beállításokon.

  • Rob Golding “Django in Production” sorozata tartalmaz egy bejegyzést kifejezetten a háttérfeladatokról.

  • How to run celery as a daemon?egy rövid bejegyzés a minimális kóddal a Celery daemon és aCelerybeat rendszerszolgáltatásként való futtatásához Linuxon.

  • Celery in Production a Caktus Group blogján jó gyakorlatokat tartalmaz a Celery RabbitMQ-val, monitoring eszközökkel és más, a meglévő dokumentációban nem gyakran tárgyalt szempontokkal kapcsolatos tapasztalataikból.

  • Three quick tips from two years with Celeryprovides some solid advice on retry delay, the -Ofair flag and globaltask timeouts for Celery.

.

admin

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.

lg