Kurzy a certifikace Dev & Test
Python - pokročilé vlastnosti
Cena (bez DPH)
Kurz Python - pokročilé vlastnosti je určen pro programátory, kteří mají základní znalosti jazyka Python 3, chtějí si prohloubit své vědomosti a zároveň se zdokonalit v návrhu a řešení aplikací a algoritmů v tomto jazyce. Hlavní důraz bude kladen na asynchronní programování, jehož použití se neustále zvyšuje. Ale zároveň si ukážeme, kde je jeho použití zbytečné.
Během kurzu budeme řešit ukázkový projekt, ve kterém budeme využívat jednotlivých vlastností jazyka a ukážeme si jak jednoduše fungují některé aspekty, které mohou připomínat spíše magii. Veškeré programování bude probíhat na OS Linux v Python ≥ 3.6 v implementaci CPython.
Po skončení kurzu budou účastníci rozumět pokročilým konceptům jazyka Python, jak je rozumně využívat a jak škálovat některé algoritmy pomocí asynchronního programování.
Cílová skupina
- Programátoři se základní znalostí jazyka Python 3
- IT specialisté, kteří potřebují pokročilou automatizaci
- Všichni zvídaví lidé, kteří chtějí vědět, jak některé věci fungují pod pokličkou
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
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
- Gunicorn
- Docker
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
- run_coroutine_threadsafe
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
- Statsd, Prometheus
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