Jistě skvělý článek.
Měl bych jednu obecnou připomínku: často potkám nějaký sw/projekt/kód, který má obsáhlý a detailní popis, ale úplně mi chybí jednoduchý odstavec pro outsidery. Co to dělá, komu to poslouží a nějaký příklad.
Tady bych byl vděčný za nějaký konkrétní příklad ze života - farma zajišťující nějaké webové služby? Jedna paralelní MC simulace? Výpočetní centrum dělící úlohy? Nebo prostředí pro vývoj python aplikací - jakých?
Díky.
Zkusím jeden ze života, kde to používáme:
1) existuje sada nástrojů na analýzu zdrojových kódů. ty nástroje se spouští docela dlouho a vlastně celkově nemusí být výsledky dostupné hned, dělají se na pozadí
2) potom existuje nějaká periodická úloha, která se dívá, jestli nevyšla nová verze zdrojáků (normálně porovnání hash commitu, když není dostupný webhook)
3) tato úloha, když zjistí novou verzi, tak jen hodí do fronty úlohu typu "udělej analýzu balíčku XYZ verze 1.2.3 z URL https://github....."
4) ta úloha z bodu 1 se jen podívá, jestli už nejsou výsledky v data store, pokud ne, tak se spustí a udělá, co se žádá (toto není ideální, teoreticky by to mohlo běžet několikrát paralelně)
5) pokud z nějakého důvodu 4 zhavaruje (například je nedostupné repo atd.), vloží se úloha znovu na začátek fronty se sníženým TTL (time to live) + se zajistí, aby se to nespustilo hned za několik sekund
[ten workflow jsem trošku zjednodušil, ale +- to takto funguje].
Tady je pekny success story https://medium.com/@prabhakarparam/using-celery-to-perform-long-running-tasks-in-a-web-application-31da725833cc
My to pouzivame s SQS (od Amazonu), coz je pomerne pekna kombinace, samozrejme pokud nekomu nevadi, ze ma data na AWSku. Planovani testovacich uloh, proste tam hodime description test jobu v pripade, ze to nejde jednoduse naplanovat na Jenkinsu (protoze kdyz se to vezme do dusledku, tak je Jenkins taky system pro "frontovani" uloh, dokonce i s prioritama a tak).