Celery är en implementering av en uppgiftskö för Python-webbapplikationer som används för att asynkront utföra arbete utanför HTTP-förfrågnings- och svarscykeln.

Celery är en implementering av uppgiftskökonceptet. Läs mer i kapitlet om webbutveckling eller se innehållsförteckningen för alla ämnen.

Varför är Celery användbart?

Taskköer och Celery-implementationen i synnerhet är en av de knepigare delarna av en Python-webbapplikationsstack att förstå.

Om du är en juniorutvecklare kan det vara oklart varför det är viktigt att flytta ut från HTTP-förfrågan-svarscykeln. Kort sagt vill du att din WSGI-server ska svara på inkommande förfrågningar så snabbt som möjligt eftersom varje förfrågan binder upp en arbetsprocess tills svaret är klart. Att flytta arbetet från dessa arbetare genom att starta asynkrona jobb som uppgifter i en kö är ett enkelt sätt att förbättra WSGI-serverns svarstider.

Vad är skillnaden mellan Celeryd och Celerybeat?

Celery kan användas för att köra batchjobb i bakgrunden enligt ett regelbundet schema. Ett nyckelbegrepp i Celery är skillnaden mellan Celery daemon (celeryd), som utför uppgifter, och Celerybeat, som är eneduler. Tänk på Celeryd som en tunnelvision med en eller flera arbetare som hanterar de uppgifter som du lägger fram för dem. Varje arbetare kommer att utföra en uppgift och när uppgiften är slutförd kommer nästa uppgift att tas upp.Cykeln kommer att upprepas oavbrutet, och bara vänta i sysslolöshet när det inte finns några fler uppgifter att lägga framför dem.

Celerybeat å andra sidan är som en chef som håller reda på när uppgifter ska utföras. Ditt program kan tala om för Celerybeat att utföra en uppgift med tidsintervall, t.ex. var 5:e sekund eller en gång i veckan. Celerybeat kan också instrueras att utföra uppgifter på ett visst datum eller en viss tid, t.ex. kl. 17.03 varje söndag. När intervallet eller den specifika tiden är uppnådd överlämnar Celerybeat uppgiften till Celeryd som utför den på nästa tillgängliga arbetare.

Celery tutorials and advice

Celery är ett kraftfullt verktyg som kan vara svårt att förstå till en början. Se till att du läser på om begreppet task queue och sedan dyker ner i dessa specifika Celery-handledningar.

  • A 4 Minute Intro to Celery är en kort introduktion till Celery med en screencast om task queue.

  • Den här blogginläggsserien om Celerys arkitektur, Celery in the wild: tips and tricks to run async tasks in the real worldanddealing with resource-consuming tasks on Celery ger ett bra sammanhang för hur Celery fungerar och hur man hanterar några av de knepigare bitarna i arbetet med task queue.

  • Hur man använder Celery med RabbitMQär en detaljerad genomgång av hur man använder dessa verktyg på en Ubuntu VPS.

  • Celery – Best Practicesexklarar saker som du inte bör göra med Celery och visar på några underutnyttjade funktioner för att göra det lättare att arbeta med task köer.

  • Celery Best Practicesär en annan författares uppföljning av ovanstående inlägg om bästa praxis som bygger på några av hans egna lärdomar från över tre år med Celery.

  • Common Issues Using Celery (And Other Task Queues)innehåller goda råd om misstag som bör undvikas i dina uppgiftskonfigurationer, t.ex. användning av databastransaktioner och att försöka igen misslyckade uppgifter.

  • Asynchronous Processing in Web Applications Part Oneand Part Twoär bra läsning för att förstå skillnaden mellan en task queue och varför du inte bör använda din databas som en sådan.

  • My Experiences With A Long-Running Celery-Based Microprocessger några bra tips och råd baserade på erfarenhet av Celery-arbetare som tar lång tid på sig att slutföra sina jobb.

  • Checklist to build great Celery async tasksis är en webbplats som är särskilt utformad för att ge dig en lista över bra metoder att följa när du utformar din task queue-konfiguration och distribuerar den till utvecklings-, staging- och produktionsmiljöer.

  • Heroku skriver om hur man säkrar Celery när uppgifter annars skickas över okrypterade nätverk.

  • Enhetstestning av Celery-uppgifterförklarar tre strategier för att testa kod inom funktioner som Celeryexekverar. Inlägget drar slutsatsen att anropa Celery tasks synkront för att testa dem är den bästa strategin utan några nackdelar. Tänk dock på att alla testmetoder som inte är samma som hur funktionen kommer att exekveras i en produktionsmiljö potentiellt kan leda till förbisedda fel. Det finns också ett Git-arkiv med öppen källkod med all källkod från inlägget.

  • Rollbar-övervakning av Celery i en Django-app förklarar hur man använder Rollbar för att övervaka uppgifter. Supernyttigt när arbetare alltid dör utan någon uppenbar anledning.

  • 3 Gotchas for Working with Celeryär saker att tänka på när du är ny i Celery task queueimplementation.

  • Dask och Celeryjämför Dask.distributed med Celery för Pythonprojekt. Inlägget ger kodexempel för att visa hur man utför uppgifter med endera uppgiftskön.

  • Python+Celery: Chaining jobs?förklarar att Celery-uppgifter bör vara beroende av varandra med hjälp avCelery chains, inte direkta beroenden mellan uppgifter.

Celery med webbramverk

Celery används vanligen med ett webbramverk somDjango, Flask eller Pyramid.De här resurserna visar hur du integrerar Celery task queue med det webramverk du väljer.

  • Hur man använder Celery och RabbitMQ med Djangoär en bra handledning som visar hur man både installerar och ställer in en basictask med Django.

  • Miguel Grinberg har skrivit ett bra inlägg om hur man använder taskkön Celery med Flask.Han ger en översikt över Celery följt av specifik kod för att konfigurera taskkön och integrera den med Flask.

  • Setting up an asynchronous task queue for Django using Celery and Redisis en enkel handledning för att sätta upp Celery task queue forDjango webbapplikationer med hjälp av Redis broker på baksidan.

  • A Guide to Sending Scheduled Reports Via Email Using Django And Celerysvisar dig hur du använderjango-celery i din applikation. Observera dock att det finns andra sätt att integreraCelery med Django som inte kräver django-celery-beroendet.

  • Flask asynkrona bakgrundsuppgifter med Celery och Rediscombinerar Celery med Redis som mäklare ochFlask som ramverk för exempelapplikationen.

  • Celery och Django och Docker: Oh My!visar hur man skapar Celery-uppdrag för Django i en Dockercontainer. Den ger också några

  • Asynkrona uppgifter med Django och Celerysvisar hur man integrerar Celery med Django och skapar periodiska uppgifter.

  • Geting Started Scheduling Tasks with Celeryär en detaljerad genomgång av hur man ställer in Celery med Django (även omCelery också kan användas utan problem med andra ramverk).

  • Introducing Celery for Python+Django ger en introduktion till Celery task queue med Django som det avsedda ramverket för att bygga en webbapplikation.

  • Asynchronous Tasks with Falcon and Celeryconfigurerar Celery med Falcon-ramverket, som inte är så vanligt förekommande i webbutbildningar.

  • Custom Celery task statesär ett avancerat inlägg om hur man skapar egna tillstånd, vilket är särskilt användbart för tillfälliga tillstånd i din applikation som inte täcks av standardkonfigurationen av Celery.

  • Asynkrona uppgifter med Django och Celery tittar på hur du konfigurerar Celery för att hantera långvariga uppgifter i en Django-app.

Celery deployment resources

Celery och dess broker körs separat från dina webb- och WSGI-servrar, vilket gör att det ger en viss extra komplexitet till dina deployeringar. Följande resurser går igenom hur du hanterar distributioner och får rätt konfigurationsinställningar på plats.

  • Serien ”Django in Production” avRob Golding innehåller ett inlägg specifikt om Background Tasks.

  • How to run celery as a daemon?är ett kort inlägg med den minimala koden för att köra Celery daemon och Celerybeat som systemtjänster på Linux.

  • Celery in Productionpå Caktus Groups blogg innehåller goda metoder från deras erfarenhet av att använda Celery med RabbitMQ, övervakningsverktyg och andra aspekter som inte ofta diskuteras i befintlig dokumentation.

  • Three quick tips from two years with Celeryger ger några gedigna råd om retry delay (återförsöksfördröjningar), flaggan -Ofair och globala timeouts för Celery.

admin

Lämna ett svar

Din e-postadress kommer inte publiceras.

lg