Kjører Selleri med RabbitMQ

Det har vært en eksplosjon av interesse for distribuert behandling.lengre kjører oppgaver på tvers av mange forskjellige arbeidere. Message brokerslik Som RabbitMQ gi kommunikasjon mellom noder. Kjører Celeryclients, arbeidere, og relaterte megler i skyen gir teamet powerto enkelt administrere og skalere backend prosesser, jobber og grunnleggende administrativetasks.

Hva Er Selleri?

Celeryis en distribuert jobbkø som forenkler styringen av oppgavedistribusjon.Utviklere bryte datasett i mindre grupper For Selleri å behandle i aunit arbeid kjent som en jobb.

du distribuerer en eller flere arbeidsprosesser som kobler til en meldingskø(anAMQP-eller SQS-basert megler). Klienter sender jobber til meldingsmegleren, ogkøen lytter etter jobbforespørsler ved hjelp avselleri. Meldingsmegleren distribuerer deretter jobbforespørsler til arbeidstakere.Arbeidere venter på jobber Fra Selleri og utfører oppgavene.Når du er ferdig, sender arbeideren et resultat til en annen kø for klienten toprocess.

I Selleri kommuniserer klienter og arbeidere ikkedirekte med hverandre, men gjennom meldingskøer.Klienter sende meldinger ved hjelp av oppgaver i systemet mye som en ekstern procedurecall starter en funksjon. Klienter trenger ikke å forstå den faktiskeformat, men annotere funksjoner og registrere dem med rammen:

@app.task def send_hello(x, y): return ‘Hello’ # overrides the broker from your configuration app = Celery('app_name', broker='...') app.tasks 

Ved hjelp av den offisielle Python-bindingen opprettet vi en oppgave og registrerte den medsystemet. Du kan brukeapply_async(function, args, kwargs,...) – metodenfor å sende oppgaven til riktig kø. Klienten kallerget påfremtid returnert av apply_asyncfor å blokkere og hente svaret eller brukertilstandsmetoden for å starte et anrop til megleren som kontrollerer statusen tilforespørselen.

en melding som rutes til en kø, venter i køen til noen bruker den,og meldingen slettes fra køen når den er bekreftet.

Resultater I Selleri

Det er mulig å holde styr på en oppgaves tilstand. Selleri kan ogsålagre eller sende statene. Så, i stedet for å bruke get-funksjonen, er det muligå presse resultatene til en annen backend. Det er flere innebygde resultbackends å choosefrom includingSQLAlchemy, specificdatabasesandRPC (RabbitMQ).Som standard er Selleri konfigurert til ikke å forbruke oppgaveresultater. Angi konfigurasjonsalternativet result_backend = 'rpc' forteller systemet å sende et svar til en unik kø for forbruk. Det anbefales ikke å bruke ampq backend. Det kan føre til en minnelekkasje.

Mer informasjon om resultater kan bli funnether.

Hva er utveksling I Selleri?

Selleri fungerer gjennommessage routerog thepublish-abonner mønstre.Utgivere push meldinger til en utveksling som benytter enten direkte orwildcard matching toroutethem til en eller flere arbeidskøer i megleren. Exchange-typen definerer hvordanmeldingene rutes gjennom utvekslingen.Du konfigurerer exchange-typer i konfigurasjonen:

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 dette eksemplet erklærer du en standardkø som den eneste kjente køen med standardutveksling, men overstyrer typen til emne med rutingsnøkkelall_tasks.task_type. Emneutvekslingen lar deg bruke jokertegn matchingslik at oppgaver sendes til all_tasks.* er fortsatt mottatt. Denne konfigurasjonenkan forekomme i samme modul hvor du starter programmet.

Typer Utvekslinger

standard utvekslingstyper er direkte, emne, fanout og overskrifter. Thesedictate hvordan meldinger passere til abonnenter. Routing nøkler må samsvare nøyaktig ien direkte utveksling. Fanout-utvekslinger sender meldinger til alle vedlagte køer.Emner tillate jokertegn samsvar. Header utveksling passerer bare metadata.

Lær mer omrabbitmq utveksling og ruting nøkler

Når bør Jeg bruke Selleri?

Som et oppgavesystem fungerer Selleri godt med lange løpende prosesser ellersmå repeterbare oppgaver som arbeider med batcher.Typer av Problemer Selleri håndtak er vanlige asynkrone oppgaver. Imagescaling, videokoding, ETL, e-postsending eller andre rørledninger drar nytte av dette forhåndsbygde rammeverket som håndterer mye av arbeidet som er involvert i deres konstruksjon.

hva er fordelene Med Å bruke Selleri?

Selleri fungerer med alle språk gjennom standardisert meldingsprotokoll.Bortsett fra den offisielle Python-utgivelsen, er andre Apier i utvikling for e.g.Java, RustandNode.Det er mulig å lage et sentralisert system ved hjelp av alle språk med anAMQP ELLER SQS API.Andre fordeler inkluderer å minimere mengden kode som kreves for å distribuere oppgaver og muligheten til å planlegge jobber med jevne mellomrom gjennomcelerybeat.Celerybeat er en planlegger som starter oppgaver med jevne mellomrom.En frittstående sanntidsovervåking for Selleriarbeidere er også tilgjengelig gjennomcelerymon.

Hvorfor skal jeg bruke en cloud message broker?

Som en forhåndsbygget mellommann forenkler Selleri rørledningsutvikling og ledelse.CloudAMQP eliminerer de administrative behovene til backend med ready-madeclusters.

«Vi bruker CloudAMQP-RabbitMQ som megler for våre asynkrone oppgaver throughCelery. Vi bruker den som hendelsesbasert async-tjeneste. CloudAMQP supports vårt prosjekt gjennom riktig overvåking og høy tilgjengelighet og skalerbarebroker køer.»Shivam Arora, Delhivery

Du trenger ikke lenger å bekymre deg for å skalere systemet for å møte økende etterspørsel.Våre forekomster kommer med administrasjonskonsollen som allerede kjører.

Sette Opp RabbitMQ med CloudAMQP

CloudAMQP avsetninger Din RabbitMQ instancesnearly umiddelbart.Opprett en konto og klargjøre en forekomst direkte fra web managementinterface. Innebygd automatisk skalering gjør at meglerne dine kan jobbe raskt.CloudAMQP baser koster helt på kraften i den underliggende provisionedinstance, og du er i stand til å skalere opp og ned mellom ulike planer whenneeded. Vårt gratis nivå,little lemur, er et utmerket alternativ for testing.

Hvordan bruker Jeg CloudAMQP som Min Selleri melding megler?

Når klargjort, Din CloudAMQP megler fungerer på samme måte som ditt lokale system. Alt du trenger er EN URL, brukernavn og passord for å etablere forbindelse til megleren. Selleri håndterer resten:

app = Celery('app_name', broker='amqps://user:password@host:port/host’)print(app.conf.broker_url)

Sellerirammen lagrer NETTADRESSEN i konfigurasjonen. Siden Selleri runsseparately fra megleren, får du samme grad av kontroll som om du kjører hele systemet lokalt.

Kan Jeg kjøre Mine Selleri arbeidere i skyen?

Mens CloudAMQP gir en meldingsmegler, er det også mulig å distribuere selgere på AWS eller en annen skytjeneste. Arbeidere trenger bare å vitehvor megleren bor for å bli en del av systemet. Selleri opprettholder aqueue for hendelser og meldinger uten en felles registernode.

På grunn av bruk av en megler for systemadministrasjon, kan du kjøre oppgaver inDocker containere overKubernetes.Beholdere skaleres automatisk for å passe dine behov, Mens Kubernetes lar deg definere skaleringspolicyer og Flower gir overvåkingsfunksjoner.En offisiell Selleribeholder finner du her:https://hub.docker.com/_/celery.Celery støttes også fullt ut påheroku.Kjører selleri klienter og arbeidere i skyen minimerer kostnadene for å utvikle og distribuere rørledninger.

Hvorfor CloudAMQP sponser Selleriprosjektet

Vi har mange kunder som kjører applikasjoner som stoler På Selleri,og vi støtter derfor aktivt og månedlig utviklingen AV theCelery (AMQP) prosjektet. Gi oss beskjed hvis Det er noe I Celerythat du vil at vi skal sette ekstra fokus på.

Besøk vårplan sidefor mer informasjon om å komme i gang med å distribuere En RabbitMQ cluster.Vi anbefaler deg også å lese våre anbefalte innstillinger for Selleri på CloudAMQP før du starter en produksjonsrørledning, så vel som å få en forståelse for sellerirammeverket.

Nyt denne artikkelen? Ikke glem å dele den med andre. 😉

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.