Běh celeru s RabbitMQ

došlo k explozi zájmu o distribuované zpracování.delší běžící úkoly napříč mnoha různými pracovníky. Zprostředkovatelé zprávjako je RabbitMQ poskytují komunikaci mezi uzly. Chodu Celeryclients, pracovníků a související makléř v cloudu dává váš tým sílu snadno spravovat a měřítko backend procesů, pracovních míst, a základní administrativetasks.

co je celer?

Celeryje distribuovaná fronta úloh, která zjednodušuje správu distribuce úloh.Vývojáři rozdělují datové sady do menších dávek, aby celer zpracoval v aunitu práce známé jako job.

nasadíte jeden nebo více pracovních procesů, které se připojují k frontě zpráv (zprostředkovatel založený na anAMQP nebo SQS). Klienti odesílají úlohy zprostředkovateli zpráv a fronta poslouchá žádosti o zaměstnání pomocí celery. Zprostředkovatel zpráv pak distribuuje žádosti o zaměstnání pracovníkům.Pracovníci čekají na práci z celeru a plní úkoly.Po dokončení pracovník odešle výsledek do jiné fronty pro klientproces.

v celeru klienti a pracovníci nekomunikují přímo mezi sebou, ale prostřednictvím fronty zpráv.Klienti odesílají zprávy pomocí úkolů v systému, stejně jako vzdálená procedurecall iniciuje funkci. Klienti nemusí pochopit actualformat ale komentovat funkcí a zaregistrovat s rámci:

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

Pomocí oficiální Python závazný, vytvořili jsme úkol a je zapsána v systému. Můžete použít metoduapply_async(function, args, kwargs,...)k odeslání úlohy do příslušné fronty. Klient zavolágetv budoucnosti se vrátil doapply_asyncpro blok a získat odpověď nebo usesthe státní metoda zahájit hovor makléře kontrolu o stavu finan žádost.

zpráva směrována do fronty čeká ve frontě, dokud někdo spotřebuje,a zpráva je odstraněna z fronty, když to bylo uznáno.

výsledky v celeru

je možné sledovat stavy úkolů. Celer může takéskladovat nebo posílat státy. Takže místo použití funkce get je to možnépohnat výsledky do jiného backendu. Existuje několik vestavěných výsledků,které si můžete vybrat z includingSQLAlchemy, specificdatabasesandRPC (RabbitMQ).

ve výchozím nastavení je celer nakonfigurován tak, aby nespotřebovával výsledky úkolů. Nastavení volby konfiguraceresult_backend = 'rpc'řekne systému, aby odeslal odpověď na jedinečnou frontu pro spotřebu. Nedoporučuje se používat backend ampq. Může to mít za následek únik paměti.

Více informací o výsledcích naleznete zde.

co jsou výměny v celeru?

celer pracuje prostřednictvímzprávní směrovača vzory publish-subscribe.Vydavatelé tlačí zprávy na burzu, která využívá buď přímé nebo divoké karty odpovídající jedné nebo více pracovním frontám v makléři. Typ výměny definuje, jakým způsobemzprávy jsou směrovány prostřednictvím výměny.Můžete nakonfigurovat exchange typy v konfiguraci:

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”

V tomto příkladu, můžete deklarovat výchozí fronty jako jediný známý fronty s default výměnu, ale přepsat typ téma s směrování keyall_tasks.task_type. Výměna témat umožňuje používat zástupné porovnávánítakže úkoly odeslané do all_tasks.* jsou stále přijímány. Tato konfiguracemůže dojít ve stejném modulu, kde spustíte aplikaci.

Typy Výměn

standardní výměna typy jsou přímé, téma, fanout a záhlaví. Ty určují, jak zprávy předávají Předplatitelům. Směrovací klíče se musí přesně shodovatpřímé výměny. Výměny Fanout odesílají zprávy do všech připojených front.Témata umožňují párování zástupných znaků. Výměny hlaviček předávají pouze metadata.

Další informace aboutRabbitMQ výměny a směrovací klíče

kdy mám použít celer?

jako systém fronty úkolů funguje celer dobře s dlouhými běžícími procesy nebomalé opakovatelné úkoly pracující na dávkách.Typy problémů celerové rukojeti jsou běžné asynchronní úkoly. Imagescaling, kódování videa, ETL, odesílání e-mailu, nebo jiné potrubí prospěch fromthis pre-postavený rámci zpracování moc práce v theirconstruction.

jaké jsou výhody používání celeru?

celer pracuje s jakýmkoli jazykem prostřednictvím standardizovaného protokolu zpráv.Kromě oficiálního vydání Pythonu jsou ve vývoji další API pro e.g.Java, RustandNode.Je možné vytvořit centralizovaný systém pomocí libovolného jazyka s API anAMQP nebo SQS.

mezi Další výhody patří minimalizace množství kódu potřebné k distributetasks a schopnost rozvrhu práce pravidelně throughcelerybeat.Celerybeat je plánovač, který zahajuje úkoly v pravidelných intervalech.Prostřednictvím celeru je k dispozici také samostatné monitorování v reálném čase pro pracovníky celeru.

proč bych měl používat zprostředkovatele cloudových zpráv?

jako předem postavený prostředník celer zjednodušuje vývoj a správu potrubí.CloudAMQP eliminuje administrativní potřeby vašeho backendu pomocí ready-made clusterů.

“ CloudAMQP-RabbitMQ využíváme jako zprostředkovatele pro naše asynchronní úkoly. Používáme ji jako asynchronní službu založenou na událostech. CloudAMQP podporuje náš projekt řádným sledováním a vysokou dostupností a škálovatelnými frontami brokerů.“Shivam Arora, Delhivery

už se nemusíte starat o škálování systému, abyste uspokojili rostoucí poptávku.Naše instance přicházejí s již spuštěnou konzolou pro správu.

Nastavení RabbitMQ s CloudAMQP

CloudAMQP ustanovení své RabbitMQ instancesnearly okamžitě.Vytvořte si účet a poskytněte instanci přímo z webové správyinterface. Vestavěné automatické škálování umožňuje vašim makléřům rychle pracovat.CloudAMQP báze stojí zcela na síle podkladového provisionedinstance, a jste schopni škálovat nahoru a dolů mezi různými plány, kdyneeded. Naše bezplatná vrstva, malý lemur, je vynikající volbou pro testování.

Jak mohu použít CloudAMQP jako můj celer Message broker?

jakmile je váš zprostředkovatel CloudAMQP poskytnut, pracuje stejným způsobem jako systém youron-premises. Vše, co potřebujete, je adresa URL, uživatelské jméno a heslo k navázání spojení s makléřem. Celer zpracovává zbytek:

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

rámec celeru ukládá URL v konfiguraci. Vzhledem k tomu, celer runsseparally od makléře, získáte stejný stupeň kontroly, jako kdyby runningyour celý systém na místě.

mohu spustit své celerové pracovníky v cloudu?

zatímco CloudAMQP poskytuje zprostředkovatele zpráv, je také možné nasadit pracovníky na AWS nebo jinou cloudovou službu. Pracovníci potřebují pouze vědět, kde se makléř nachází, aby se stal součástí systému. Celer udržuje aqueue pro události a oznámení bez společného uzlu registru.

Vzhledem k použití makléře pro správu systému, můžete spustit své úkoly inDocker kontejnery overKubernetes.Kontejnery se automaticky přizpůsobí vašim potřebám, zatímco Kubernetes umožňuje definovat zásady škálování a Flower poskytuje monitorovací funkce.Oficiální celerový kontejner najdete zde:https://hub.docker.com/_/celery.Celery je také plně podporován onHeroku.

spuštění vašich celerových klientů a pracovníků v cloudu minimalizuje náklady na vývoj a nasazení potrubí.

Proč CloudAMQP sponzoruje Celer projektu

Máme mnoho zákazníků spuštěných aplikací, které jsou důvěřivý Celer,a proto jsme aktivně a měsíční podpora rozvoje theCelery (AMQP) projektu. Dejte nám prosím vědět, jestli je v Celerythe něco, na co byste chtěli, abychom se více zaměřili.

navštivte stránku našeplan pro více informací o tom, jak začít s nasazením klastru RabbitMQ.Doporučujeme vám také přečíst si naše doporučená nastavení pro celer na CloudAMQP před zahájením výrobního potrubí a také ocenit rámec celeru.

užijte si tento článek? Nezapomeňte se o to podělit s ostatními. 😉

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.