12. cvičenie – pajplajna 🚰

Úloha

Vytvor asynchrónnu aplikáciu, ktorá bude asynchrónne spúšťať viacero pajplajn súbežne. Každá pajplajna pozostáva z viacerých sériovo zapojených korutín:

  1. údaje = získaj údaje(typ údajov)
  2. sparsované = parsuj údaje(údaje)
  3. validné = validuj údaje(sparsované)
  4. upravené = transformuj údaje(validné)
  5. agregované = agreguj údaje(upravené)
  6. ulož údaje(agregované)

Náležitosti riešenia:

  • jazyk Python 3.11 a viac
  • logovanie vykonávaných krokov pomocou modulu logging (správna voľba úrovne hlásenia)
  • použitie async/await a asyncio.run()
  • výstup korutiny je vstupom ďalšej
  • ošetrenie výnimiek
  • na súčasné spustenie viac pipeline použi TaskGroup, nie asyncio.gather() a pomocou tohto mechanizmu zruš všetky pajplajn pri chybe niektorej z nich
  • vstupné údaje simuluj pomocou API streamu (technika mockovania údajov)
  • riešenie má obsahovať retry logiku pre API stream a graceful shutdown, nie hard cancel!
    • retry logika má mať max. počet pokusov a exponenciálny backoff
    • graceful shutdown má pekne dokončit cleanup, zalogovať odpojenie…

Preštuduj priložený programový kód a vhodne doplň na predpripravené miesta chýbajúcu funkcionalitu. Kód je k dispozícii na skopírovanie nižšie alebo v archíve na stiahnutie.