[Kurz] Program kurzu (obsah přednášky/semináře/rekvalifikace/studia) ...
Cíle kurzu Účastníci se mimo jiné naučí:
- Napsat celou aplikaci, která bude schopna přes síť publikovat data pro své klienty
- Psaní testů pro aplikaci a asynchronní funkce
- Znalost pokročilých vlastností jazyka Python (dekorátory, context-managery, generátory, ...)
- A jak tyto věci integrují s asynchronním programováním
* Účastníci se mimo jiné naučí:
- Napsat celou aplikaci, která bude schopna přes síť publikovat data pro své klienty
- Psaní testů pro aplikaci a asynchronní funkce
- Znalost pokročilých vlastností jazyka Python (dekorátory, context-managery, generátory, ...)
- A jak tyto věci integrují s asynchronním programováním
Osnova Sjednocení základních znalostí
- Použití Pipfile a pipenv namísto requirements.txt
- Návrh základní šablony pro spustitelnou aplikaci
- Příprava testů
- Typové anotace a Python
Návrh aplikace, která bude tvořena během
kurzu - Příprava funkcí pro načítání obsahu - generátory
- Testování generátorů
- Pozor na assert mimo testy
- Jednoduchý data logging do SQLite (Použití a napsání vlastního context-manageru)
Jednoduchý HTTP server v Python
- SimpleHTTPServer
- Flask (velice jednoduchá ukázka)
- Použití manhole pro debugování běžící aplikace
GIL uvnitř CPython
- Co? Proč?
- Použití vláken na škálování” a proč nefungují
- Jak tedy škálovat?
- Multiprocessing a concurrent modul
- Pozor na Process a Thread pooly (velikost)
Použití asyncio
- Rozšířená syntaxe
- Základní pojmy
Přepsání webového serveru do aiohttp
- Vysvětlení pojmů a chování v asyncio
- Dekorátory, context-managery
- Testy a asyncio
- Manhole v asyncio
- Transport-less protocols
Pokročilý error handling v asyncio Debugování asyncio aplikace
- Použití socketů a telnetu jako clienta
- Slow callbacks v asyncio
- context-variables v Python 3.7
Produkční nasazení naší asyncio aplikace
Doplňující témata Pokud v rámci
kurzu zbyde čas, můžeme se podívat na některé edge-case uvnitř Python a CPython implementace a jejich řešení. Asyncio a vlákna
Co dělat pokud CPython SEGFAULTuje
- Kdy může CPython SEGFAULTnout?
- Faulthandler
- Core dump CPythonu a debugování
- Python stack trace uvnitř gdb
Profilování aplikace
- Statistické profilování vs line profiler
Monitorování aplikace
Předpoklady účastníka
- Základní kurz Python
- Základní povědomí o síťování
- Základní znalost OS Linux
- Použití terminálu pro spouštění příkazů
Požadavek na BYOD
- Počítač s jakoukoliv distribucí OS Linux
- Předinstalovaný Python >= 3.6
- Předinstalovaný nástroj virtualenv
- Webový prohlížeč
- Telnet client