Wat is selderij?
Celeryis een gedistribueerde taakwachtrij die het beheer van taakverdeling vereenvoudigt.Ontwikkelaars breken datasets in kleinere batches voor selderij te verwerken in aunit van werk bekend als een baan.
u implementeert een of meer werkprocessen die verbinding maken met een message queue (anamqp of SQS gebaseerde broker). Klanten sturen taken naar de message broker, en de wachtrij luistert naar vacatureverzoeken met behulp van celery. De message broker verspreidt vervolgens sollicitaties naar werknemers.Werknemers wachten op banen van selderij en de taken uit te voeren.Als u klaar bent, stuurt de werknemer een resultaat naar een andere wachtrij voor de client toprocess.
in selderij communiceren cliënten en werknemers niet rechtstreeks met elkaar, maar via berichtwachtrijen.Clients verzenden berichten met behulp van taken in het systeem, net zoals een remote procedurecall een functie initieert. Clients hoeven de actualformat niet te begrijpen, maar annoteren functies en registreren ze met het framework:
@app.task def send_hello(x, y): return ‘Hello’ # overrides the broker from your configuration app = Celery('app_name', broker='...') app.tasks
met behulp van de officiële Python binding, hebben we een taak aangemaakt en geregistreerd met het systeem. U kunt de methodeapply_async(function, args, kwargs,...)
gebruiken om de taak naar de juiste wachtrij te sturen. De cliënt calltget
op de toekomst geretourneerd doorapply_async
om het antwoord te blokkeren en op te vragen of gebruikt de staatsmethode om een call te starten naar de makelaar om de status van het verzoek te controleren.
een bericht dat naar een wachtrij wordt geleid,wacht in de wachtrij totdat iemand het verbruikt, en het bericht wordt verwijderd uit de wachtrij wanneer het is bevestigd.
resulteert in selderij
Het is mogelijk om de status van een taak bij te houden. Selderij kan ook de staten opsturen of opsturen. Dus, in plaats van de get-functie te gebruiken, is het mogelijk om resultaten naar een andere backend te pushen. Er zijn verschillende ingebouwde resultaatbackends om te kiezen uit includingSQLAlchemy, specificdatabasesandRPC (RabbitMQ).
standaard is Selery geconfigureerd om geen taakresultaten te gebruiken. Het instellen van de configuratieoptieresult_backend = 'rpc'
vertelt het systeem om een antwoord te sturen naar een unieke wachtrij voor consumptie. Het is niet aan te raden om de ampq-backend te gebruiken. Het kan leiden tot een geheugenlek.
meer informatie over de resultaten vindt u hier.
Wat zijn uitwisselingen in selderij?
selderij werkt via de message router en de public-subscribe patronen.Uitgevers push berichten naar een uitwisseling die direct ofwildcard matching toroutthem gebruikt om een of meer werk wachtrijen in de makelaar. Het exchange-type bepaalt hoe de berichten door de exchange worden geleid.U configureert exchange types in de configuratie:
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”
in dit voorbeeld verklaart u een standaard wachtrij als de enige bekende wachtrij met de standaard uitwisseling, maar overschrijft het type naar topic met de routing keyall_tasks.task_type. De topic exchange kunt u jokertekens matchings gebruiken zodat taken verzonden naar all_tasks.* zijn nog steeds ontvangen. Deze configuratie kan plaatsvinden in dezelfde module waar u uw applicatie start.
soorten beurzen
De standaard exchange types zijn direct, topic, fanout en headers. Zo worden berichten doorgegeven aan abonnees. Routeringssleutels moeten exact overeenkomen met Ina direct exchanges. Fanout exchanges sturen berichten naar alle bijgevoegde wachtrijen.Onderwerpen zorgen voor jokertekens matching. Header exchanges geven alleen metadata door.
meer informatie over RabbitMQ exchanges en routing keys
Wanneer moet ik selderij gebruiken?
als een taakwachtrijsysteem werkt selderij goed met lang lopende processen of kleine herhaalbare taken die op batches werken.De soorten problemen selderij handvatten zijn gemeenschappelijke asynchrone taken. Imagescaling, video-encoding, ETL, e-mail verzenden, of andere pijpleidingen profiteren van deze pre-built framework behandeling veel van het werk betrokken bij hun bouw.
wat zijn de voordelen van het gebruik van selderij?
selderij werkt met elke taal via het gestandaardiseerde message protocol.Afgezien van de officiële Python release, andere API ‘ s zijn in ontwikkeling voor e.g.Java RustandNode.Het is mogelijk om een gecentraliseerd systeem te maken met behulp van elke taal met anAMQP of SQS API.
andere voordelen zijn onder meer het minimaliseren van de hoeveelheid code die nodig is om taken te distribueren en de mogelijkheid om taken periodiek te plannen via versnelde verwerking.Celerybeat is een planner die aftrapt taken met regelmatige tussenpozen.Een standalone real-time monitoring voor selderij werknemers is ook beschikbaar viacelerymon.
waarom zou ik een Cloud message broker gebruiken?
Als vooraf gebouwde tussenpersoon vereenvoudigt selderij de ontwikkeling en het beheer van pijpleidingen.CloudAMQP elimineert de administratieve behoeften van uw backend met ready-madeclusters.
” we gebruiken CloudAMQP – RabbitMQ als broker voor onze Async-taken via celery. We gebruiken het als de event-based async-service. CloudAMQP ondersteunt ons project door een goede monitoring en hoge beschikbaarheid en schaalbare broker wachtrijen.”Shivam Arora, Delhivery
u hoeft zich geen zorgen meer te maken over het schalen van uw systeem om aan de groeiende vraag te voldoen.Onze instances worden geleverd met de beheerconsole die al draait.
RabbitMQ instellen met CloudAMQP
CloudAMQP Voorzieningen uw RabbitMQ instancesnaar onmiddellijk.Maak een account aan en zorg voor een instantie rechtstreeks vanuit het web managementinterface. Ingebouwde auto-scaling kunt uw makelaars om snel te werken.CloudAMQP baseert kosten volledig op de kracht van de onderliggende provisionedinstance, en je bent in staat om op en neer te schalen tussen verschillende plannen wanneer nodig. Onze gratis tier,little lemur, is een uitstekende optie voor het testen.
Hoe gebruik ik CloudAMQP als mijn selderij message broker?
na levering werkt uw CloudAMQP broker op dezelfde manier als uw on-premises systeem. Alles wat je nodig hebt is een URL, gebruikersnaam en wachtwoord om een verbinding met de makelaar tot stand te brengen. Selderij behandelt de rest:
app = Celery('app_name', broker='amqps://user:password@host:port/host’)print(app.conf.broker_url)
Het selderij framework slaat de URL op in de configuratie. Aangezien selderij los van de makelaar draait, krijgt u dezelfde mate van controle alsof u uw hele systeem on-premises uitvoert.
kan ik mijn Selderijwerkers in de cloud draaien?
terwijl CloudAMQP een message broker biedt, is het ook mogelijk om celery-werknemers in te zetten op AWS of een andere clouddienst. Werknemers hoeven alleen maar te weten waar de makelaar woont om deel uit te maken van het systeem. Selderij onderhoudt aqueue voor evenementen en meldingen zonder een gemeenschappelijk register knooppunt.
door het gebruik van een broker voor systeembeheer, kunt u uw taken uitvoeren inDocker containers overKubernetes.Containers automatisch schalen naar uw behoeften, terwijl Kubernetes kunt u bepalen schalen beleid en Flower biedt monitoring mogelijkheden.Een officiële Selderijcontainer is hier te vinden:https://hub.docker.com/_/celery.Celery wordt ook volledig ondersteund opheroku.
het runnen van uw selderij clients en werknemers in de cloud minimaliseert de kosten van het ontwikkelen en implementeren van pijpleidingen.
waarom CloudAMQP het selderij project sponsort
we hebben veel klanten die toepassingen draaien die selderij vertrouwen,en daarom ondersteunen we actief en maandelijks de ontwikkeling van het selderij (AMQP) project. Laat het ons weten als er iets in de Celerythat u wilt dat we extra focus op te zetten.
bezoek onzeplanpagina voor meer informatie over aan de slag gaan met het implementeren van een RabbitMQ-cluster.Wij raden u ook aan om onze aanbevolen settings voor selderij op CloudAMQP te lezen voordat u een productielijn start, evenals een appreciatie voor het selderijkader.