Vad är selleri?
Celeryär en distribuerad jobbkö som förenklar hanteringen av uppgiftsdistribution.Utvecklare bryter dataset i mindre satser för selleri att bearbeta i aunit of work som kallas ett jobb.
du distribuerar en eller flera arbetsprocesser som ansluter till en meddelandekö (anAMQP eller SQS-baserad mäklare). Kunder skickar jobb till meddelandemäklaren, ochkön lyssnar på jobbförfrågningar medselleri. Meddelandemäklaren distribuerar sedan jobbförfrågningar till arbetare.Arbetare väntar på jobb från selleri och utför uppgifterna.När du är klar skickar arbetaren ett resultat till en annan kö för klienten tillprocess.
i selleri kommunicerar kunder och arbetare intedirekt med varandra utan genom meddelandeköer.Klienter skickar meddelanden med uppgifter i systemet mycket som en fjärrprocedurcall initierar en funktion. Klienter behöver inte förstå det faktiskaformat men kommentera funktioner och registrera dem med ramverket:
@app.task def send_hello(x, y): return ‘Hello’ # overrides the broker from your configuration app = Celery('app_name', broker='...') app.tasks
med den officiella Python-bindningen skapade vi en uppgift och registrerade den medsystemet. Du kan användaapply_async(function, args, kwargs,...)
metodför att skicka uppgiften till lämplig kö. Klienten ringerget
påframtiden som returneras avapply_async
för att blockera och hämta svaret eller användningarstatsmetoden för att initiera ett samtal till mäklaren som kontrollerar statusen förförfrågan.
ett meddelande som dirigeras till en kö väntar i kön tills någon konsumerar det,och meddelandet raderas från kön när det har bekräftats.
resulterar i selleri
det är möjligt att hålla reda på en uppgift stater. Selleri kan ocksålagra eller skicka staterna. Så istället för att använda get-funktionen är det möjligtatt driva resultat till en annan backend. Det finns flera inbyggda resultatbackends to choosefrom includingSQLAlchemy, specificdatabasesandRPC (RabbitMQ).
som standard är selleri konfigurerat att inte konsumera uppgiftsresultat. Inställning av konfigurationsalternativetresult_backend = 'rpc'
talar om för systemet att skicka ett svar på en unik kö för konsumtion. Det rekommenderas inte att använda ampq-backend. Det kan leda till en minnesläcka.
Mer information om resultat finns här.
vad är utbyten i selleri?
selleri fungerar genommeddelande routerochpublicera-prenumerera mönster.Publishers push-meddelanden till ett utbyte som använder antingen direkt ellerwildcard matchande toroutethem till en eller flera arbetsköer i mäklaren. Exchange-typen definierar hurmeddelandena dirigeras genom utbytet.Du konfigurerar exchange-typer i konfigurationen:
CELERY_QUEUES = { "my_queue”:{ "exchange”: "my_exchange”, "exchange_type”: "topic”, "binding_key”: "all_tasks.task_type” } } CELERY_DEFUALT_EXCHANGE=”my_exchange” CELERY_DEFAULT_EXCHANGE_TYPE=”direct” CELERY_DEFAULT_ROUTING_KEY=”all_tasks”
i det här exemplet deklarerar du en standardkö som den enda kända köen med standardutbytet men åsidosätter typen till ämne med routing keyall_tasks.uppgiftstyp. Ämnesutbytet låter dig använda jokertecken matchningså att uppgifter skickas till all_tasks.* är fortfarande mottagna. Denna konfigurationkan förekomma i samma modul där du startar din ansökan.
typer av utbyten
standardutbytestyperna är direct, topic, fanout och headers. Thesedictate hur meddelanden skickas till abonnenter. Routingnycklar måste matcha exakt ien direkt utbyte. Fanout-utbyten skickar meddelanden till alla bifogade köer.Ämnen möjliggör matchning av jokertecken. Rubrikutbyten passerar endast metadata.
Läs mer omrabbitmq utbyte och routing nycklar
När ska jag använda selleri?
som ett uppgiftsköningssystem fungerar selleri bra med långvariga processer ellersmå repeterbara uppgifter som arbetar med partier.De typer av problem selleri handtag är vanliga asynkrona uppgifter. Imagescaling, videokodning, ETL, e-postsändning eller andra rörledningar drar nytta av detta förbyggda ramverk som hanterar mycket av arbetet med deras konstruktion.
vilka är fördelarna med att använda selleri?
selleri fungerar med alla språk genom det standardiserade meddelandeprotokollet.Förutom den officiella Python-utgåvan är andra API: er under utveckling för e.g.Java, RustandNode.Det är möjligt att skapa ett centraliserat system med vilket språk som helst med anAMQP eller SQS API.
andra fördelar är att minimera mängden kod som krävs för att distribuera uppgifter och möjligheten att schemalägga jobb regelbundet genomcelerybeat.Celerybeat är en schemaläggare som startar uppgifter med jämna mellanrum.En fristående realtidsövervakning för Selleriarbetare är också tillgänglig genomcelerymon.
varför ska jag använda en cloud message broker?
som en förbyggd mellanhand förenklar selleri utveckling och hantering av rörledningar.CloudAMQP eliminerar de administrativa behoven hos din backend med ready-madeclusters.
” vi använder CloudAMQP – RabbitMQ som mäklare för våra async-uppgifter genomselleri. Vi använder den som den händelsebaserade async-tjänsten. CloudAMQP supportsour projekt genom korrekt övervakning och hög tillgänglighet och scalablebroker köer.”Shivam Arora, Delhivery
du behöver inte längre oroa dig för att skala ditt system för att möta den växande efterfrågan.Våra instanser kommer med hanteringskonsolen som redan körs.
ställa in RabbitMQ med CloudAMQP
CloudAMQP bestämmelser din RabbitMQ instancesnearly omedelbart.Skapa ett konto och tillhandahålla en instans direkt från web managementinterface. Inbyggd automatisk skalning gör att dina mäklare kan arbeta snabbt.CloudAMQP baser kostar helt på kraften i den underliggande provisionedinstance, och du har möjlighet att skala upp och ner mellan olika planer whenneeded. Vår gratis nivå,little lemur, är ett utmärkt alternativ för testning.
Hur använder jag CloudAMQP som min selleri meddelande mäklare?
När du har tillhandahållit din CloudAMQP-mäklare fungerar på samma sätt som youron-lokalsystem. Allt du behöver är en URL, användarnamn och lösenord för att etablera en anslutning till mäklaren. Selleri hanterar resten:
app = Celery('app_name', broker='amqps://user:password@host:port/host’)print(app.conf.broker_url)
selleri ramverket lagrar webbadressen i konfigurationen. Eftersom selleri körsseparat från mäklaren får du samma grad av kontroll som om du kör hela ditt system lokalt.
kan jag köra mina Selleriarbetare i molnet?
medan CloudAMQP tillhandahåller en meddelandemäklare är det också möjligt att distribuera arbetare på AWS eller annan molntjänst. Arbetare behöver bara vetadär mäklaren är bosatt för att bli en del av systemet. Selleri upprätthåller aqueue för händelser och meddelanden utan en gemensam registernod.
På grund av användningen av en mäklare för systemhantering, kan du köra dina uppgifter inDocker Behållare overKubernetes.Behållare skala automatiskt för att passa dina behov medan Kubernetes låter dig definiera skalningspolicyer och Flower tillhandahåller övervakningsfunktioner.En officiell Selleribehållare finns här:https://hub.docker.com/_/celery.Celery stöds också fullt ut påheroku.
att köra dina selleriklienter och arbetare i molnet minimerar kostnaden för att utveckla och distribuera rörledningar.
varför CloudAMQP sponsrar Selleriprojektet
Vi har många kunder som kör applikationer som litar på selleri, och vi stöder därför aktivt och månatligen utvecklingen av theCelery (AMQP) – projektet. Låt oss veta om det finns något i Celerythat du vill att vi ska lägga extra fokus på.
besök vårplansidaför mer information om hur du kommer igång med att distribuera ett RabbitMQ-kluster.Vi rekommenderar också att du läser våra rekommenderade inställningar för selleri på CloudAMQP innan du startar en produktionsledning samt får en uppskattning av selleriramen.