Dvacátý první sraz - AsyncIO a WebSockets


Anežka Müller

Dnešní sraz byl malinko nestandardní. Protože jsme se v projektu posunuly do fáze, kdy už by bylo dobré začít pracovat na spojení jednotlivých částí naší hry dohromady a zařídit, aby mezi sebou komunikovaly, rozhod se Petr udělat pro nás workshop zaměřený na asynchronní programování a WebSockets. Protože jsou to témata, která nemusí být zajímavá jen pro nás z RoboProjektu, otevřel workshop i pro další zájemce a sešli jsme se všichni tentokrát v Red Hatu, abychom měli dostatek místa.

V rámci čtyřhodinového setkání jsme si nejprve vysvětlili a na jednoduchém příkladu ukázali, co to znamená asynchronní programování a k čemu je dobré. Podívali jsme se blíže na knihovnu AsyncIO, která umožňuje napsat kód tak, aby počítač dělal více věcí zároveň, respektive zařídit, aby během toho, kdy u jednoho úkolu počítač na něco čeká, pracoval na něčem jiném. Vysvětlili jsme si základní principy, jak s touto knihovnou pracovat, a zkusili i nějaké malé praktické ukázky. Pro ty, koho by téma zajímalo hlouběji, k AsyncIO jsou dostupné podrobně zpracované materiály na stránkách Nauč se Python. Petr také bude mít na letošním PyCon CZ přednášku o tom, jak vypadá AsyncIO uvnitř, jak uvnitř funguje.

V druhé části workshopu jsme se zaměřili na WebSockets, což je protokol, který umožňuje nepřetržitou obousměrnou komunikaci mezi serverem a klientem na portu HTTP. Použili jsme knihovnu aiohttp, která umí pracovat s HTTP a WebSockets v rámci asynchronního paradigmatu, kterému jsme se věnovali v předchozí části. Pomocí této knihovny jsme si vytvořili jednoduchý server a klienta a nastavili mezi nimi vzájemnou komunikaci. Podklady k této části workshopu jsou dostupné na GithHubu a v dokumentaci aiohttp najdeme i jednoduché návody na to, jak vytvořit server i klienta.

Záznam celého workshopu najdete zde: