[Andrey Sobolev] [Udemy] ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ Π½Π° Python (asyncio, starlette) + RabbitMQ (2021)
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π½Π° asyncio python. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ Π±ΡΠΎΠΊΠ΅ΡΡ RabbitMQ. ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Pydantic.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
Π ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΡΡΡΠ° ΠΡ Π½Π°ΡΡΠΈΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Python (asyncio, Starlette), Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π±ΡΠΎΠΊΠ΅ΡΠ° RabbitMQ . ΠΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ RabbitMQ ΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ°Π½Π° Π΅Π³ΠΎ ΡΡ Π΅ΠΌΠ° ΡΠ°Π±ΠΎΡΡ. Π’Π°ΠΊΠΆΠ΅ Π²Ρ Π½Π°ΡΡΠΈΡΠ΅ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ (pytest) ΠΈ Π²Π°Π»ΠΈΠ΄ΠΈΡΠΎΠ²Π°ΡΡ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Pydantic.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΡΡΡΠ° ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° Π²ΠΎΠΊΡΡΠ³ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π½Π° asyncio python. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ Π±ΡΠΎΠΊΠ΅ΡΡ RabbitMQ. ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Pydantic.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
Π ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΡΡΡΠ° ΠΡ Π½Π°ΡΡΠΈΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Python (asyncio, Starlette), Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π±ΡΠΎΠΊΠ΅ΡΠ° RabbitMQ . ΠΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ RabbitMQ ΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ°Π½Π° Π΅Π³ΠΎ ΡΡ Π΅ΠΌΠ° ΡΠ°Π±ΠΎΡΡ. Π’Π°ΠΊΠΆΠ΅ Π²Ρ Π½Π°ΡΡΠΈΡΠ΅ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ (pytest) ΠΈ Π²Π°Π»ΠΈΠ΄ΠΈΡΠΎΠ²Π°ΡΡ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Pydantic.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΡΡΡΠ° ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° Π²ΠΎΠΊΡΡΠ³ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
- ΠΠ° ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°Π½ΡΡΠΈΠΈ ΠΌΡ Π½Π°ΡΠ½Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ main (ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΌ Π½Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅ Starlette) ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ aiocron.
- ΠΠ° Π²ΡΠΎΡΠΎΠΌ Π·Π°Π½ΡΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ ΠΏΡΠΎ ΡΠ°Π±ΠΎΡΡ RabbitMQ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ messager, ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠ΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° RabbitMQ.
- ΠΠ° ΡΡΠ΅ΡΡΠ΅ΠΌ Π·Π°Π½ΡΡΠΈΠΈ ΠΌΡ ΡΠ²ΡΠΆΠ΅ΠΌ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ main ΠΈ messager ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π±ΡΠΎΠΊΠ΅ΡΠ° RabbitMQ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΡΡΠΈΠΌΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ json ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ° ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ.
- ΠΠ° ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΌ Π·Π°Π½ΡΡΠΈΠΈ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ worker, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΈΡ Π·Π°Π΄Π°Ρ (ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° PoW). ΠΡ ΡΠ²ΡΠΆΠ΅ΠΌ Π΅Π³ΠΎ Ρ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ messager (ΠΊΠΎΡΠΎΡΡΠΉ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ main)
- ΠΠ° ΠΏΡΡΠΎΠΌ Π·Π°Π½ΡΡΠΈΠΈ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠ°ΡΡΠ΅ΡΠ½ RPC (Remote Procedure Call), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ hash, ΠΈΠ»ΠΈ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ΅ Π, ΠΈΠ· ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ° Π)
- ΠΠ° ΡΠ΅ΡΡΠΎΠΌ Π·Π°Π½ΡΡΠΈΠΈ ΠΌΡ Π½Π°ΡΡΠΈΠΌΡΡ Π²Π°Π»ΠΈΠ΄ΠΈΡΠΎΠ²Π°ΡΡ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Pydantic, ΠΎΡΠ΄Π΅Π»ΡΡΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΡ ΠΎΡ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ RabbitMQ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Pytest.
- Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ python, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΡΡ Π½Π°ΡΡΠΈΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ python, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π±ΡΠΎΠΊΠ΅ΡΠ° RabbitMQ.
Π‘ΠΊΡΡΡΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΠΎΠΉΡΠΈ ΠΈΠ»ΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ.
Π‘ΠΊΠ°ΡΠ°ΡΡ:Π‘ΠΊΡΡΡΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΠΎΠΉΡΠΈ ΠΈΠ»ΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ.