ΠΠ°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΡ FastAPI: ΠΊΠ°ΠΊ Π²Π½Π΅Π΄ΡΠΈΡΡ Sentry, Prometheus, ELK
Introduction and Problem Statement
ΠΠ°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΡ β ΡΡΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅. ΠΠ΅Π· ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² Π²Π°ΡΠ΅ΠΌ FastAPI-ΡΠ΅ΡΠ²ΠΈΡΠ΅, Π²Ρ ΡΠΈΡΠΊΡΠ΅ΡΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ, Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅, ΠΏΠΎΡΠ΅ΡΠ΅ΠΉ Π±ΠΈΠ·Π½Π΅ΡΠ°. Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΠΆΠΈΠ΄Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΡΡΡΠΎ, ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ ΠΈ Π±Π΅Π·ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎ. ΠΡΠ±ΡΠ΅ ΡΠ±ΠΎΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΈ ΡΡ ΡΠ΄ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΏΡΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.
FastAPI β ΡΡΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Python Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ API. ΠΠ½ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π²ΡΡΠΎΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΠΏΡΠΎΡΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ OpenAPI ΠΈ JSON Schema. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±ΠΎΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, FastAPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ, ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΎΠΉ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠ΅ΠΉ. ΠΠ°ΠΊ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΎΠ³ΠΈ? Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π²Π½Π΅Π΄ΡΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Sentry, Prometheus ΠΈ ELK Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠΉ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΠΈ Π²Π°ΡΠ΅Π³ΠΎ FastAPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
"ΠΠ°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΡ β ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³. ΠΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ."
ΠΠΎΡΠ΅ΠΌΡ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΡ Π²Π°ΠΆΠ½Π° Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ Π±ΠΈΠ·Π½Π΅ΡΠ°?
ΠΠ°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ Π²ΡΡΠ²Π»ΡΡΡ ΠΈ ΡΡΡΡΠ°Π½ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ Π°Π½Π°Π»ΠΈΡΠΈΠΊΡ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΡΠ³ΠΎΠ΄Ρ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ:
- Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΡΡΠΎΡ: ΠΡΡΡΡΠΎΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΈΡΠΏΡΠ°Π²Π½ΠΎΡΡΠ΅ΠΉ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΡΠΎ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅ΡΠ°.
- Π£Π»ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΎΠΏΡΡΠ°: ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΠΆΠΈΠ΄Π°ΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ ΠΈ Π±ΡΡΡΡΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΠ±ΠΎΠΈ.
- ΠΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ: ΠΠ½Π°Π»ΠΈΠ· ΠΌΠ΅ΡΡΠΈΠΊ ΠΈ Π»ΠΎΠ³ΠΎΠ² ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄, Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ.
- Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΡΡΠ°Ρ: ΠΡΡΡΡΠΎΠ΅ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π·Π°ΡΡΠ°ΡΡ Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠ΅ ΠΏΠΎΡΠ΅ΡΠΈ ΠΈΠ·-Π·Π° ΠΏΡΠΎΡΡΠΎΠ΅Π².
- ΠΡΠΈΠ½ΡΡΠΈΠ΅ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ: Π‘Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΠΈ
ΠΠ»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠΉ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΠΈ Π² FastAPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΊΡΡΠ²Π°ΡΡ ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ:
- ΠΠΎΠ³ΠΈ: Π‘Π±ΠΎΡ ΠΈ Π°Π½Π°Π»ΠΈΠ· Π»ΠΎΠ³ΠΎΠ² Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
- ΠΠ΅ΡΡΠΈΠΊΠΈ: ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
- Π’ΡΠ΅ΠΉΡΠΈΠ½Π³: ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠ΅ΡΠ΅Π· ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ·ΠΊΠΈΡ ΠΌΠ΅ΡΡ ΠΈ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Sentry, Prometheus ΠΈ ELK ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ.
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Sentry Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΎΡΠΈΠ±ΠΎΠΊ
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Sentry?
Sentry β ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π²ΡΡΠ²Π»ΡΡΡ ΠΈ ΡΡΡΡΠ°Π½ΡΡΡ Π±Π°Π³ΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ Π΄Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡ , ΡΡΠ΅ΠΊΡΡΠ΅ΠΉΡΠ°Ρ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Sentry, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ·Π½Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ, Π½ΠΎ ΠΈ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎΠΈΡ Π²ΡΠ±ΡΠ°ΡΡ Sentry?
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ FastAPI ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌΠΈ.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌ.
- ΠΠ»ΡΠ±ΠΎΠΊΠ°Ρ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΠΎΡΡ ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΈ Π·Π°ΡΡΠΎΠ½ΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ DevOps, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Slack, Jira ΠΈ GitHub.
ΠΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ Sentry Π² FastAPI?
ΠΠ»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Sentry Π² Π²Π°ΡΠ΅ FastAPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ SDK Sentry:
- ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Sentry Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ:
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ middleware Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ:
- Π’Π΅ΡΡΠΈΡΡΠΉΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ: ΠΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠΈΠΊΡΠΈΡΡΠ΅ΡΡΡ Π² Sentry.
pip install --upgrade sentry-sdk
import sentry_sdk
from fastapi import FastAPI
sentry_sdk.init(
dsn="https://",
traces_sample_rate=1.0,
)
app = FastAPI()
from starlette.middleware.errors import ServerErrorMiddleware
app.add_middleware(ServerErrorMiddleware)
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Prometheus Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΌΠ΅ΡΡΠΈΠΊ
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Prometheus?
Prometheus β ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈ ΡΠ±ΠΎΡΠ° ΠΌΠ΅ΡΡΠΈΠΊ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π° Π² ΠΌΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ². ΠΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΊΠ»ΠΈΠΊΠ°, Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Prometheus
Prometheus ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ:
- Π‘Π±ΠΎΡ ΠΌΠ΅ΡΡΠΈΠΊ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Pull-ΠΌΠΎΠ΄Π΅Π»ΠΈ.
- Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π² Π²ΠΈΠ΄Π΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ².
- ΠΠΎΡΠ½ΡΠΉ ΡΠ·ΡΠΊ Π·Π°ΠΏΡΠΎΡΠΎΠ² PromQL Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½ΡΡ .
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Grafana.
ΠΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ Prometheus Π² FastAPI?
ΠΠ»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Prometheus Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ:
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ Instrumentator Π² Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:
- ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ Prometheus: ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΡΠ°ΠΉΠ» prometheus.yml Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΠΌΠ΅ΡΡΠΈΠΊ Ρ Π²Π°ΡΠ΅Π³ΠΎ FastAPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ: Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Grafana ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄Π°ΡΠ±ΠΎΡΠ΄Ρ Π΄Π»Ρ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ .
pip install prometheus-fastapi-instrumentator
from prometheus_fastapi_instrumentator import Instrumentator
app = FastAPI()
Instrumentator().instrument(app).expose(app)
ΠΠ½Π°Π»ΠΈΠ· Π»ΠΎΠ³ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ELK-ΡΡΠ΅ΠΊΠ°
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ELK-ΡΡΠ΅ΠΊ?
ELK β ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠΉ Elasticsearch, Logstash ΠΈ Kibana. ΠΠΌΠ΅ΡΡΠ΅ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΌΠΎΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠ°, Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π»ΠΎΠ³ΠΎΠ².
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ELK Π΄Π»Ρ FastAPI
- Π¦Π΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³Π°ΠΌΠΈ: ΠΡΠ΅ Π»ΠΎΠ³ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅.
- ΠΠΎΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ: Elasticsearch ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ Π½ΡΠΆΠ½ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² Π»ΠΎΠ³Π°Ρ .
- ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ : Kibana ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄Π°ΡΠ±ΠΎΡΠ΄ΠΎΠ².
ΠΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ ELK-ΡΡΠ΅ΠΊ?
Π§ΡΠΎΠ±Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ FastAPI Ρ ELK:
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Logstash ΠΈ Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π»ΠΎΠ³ΠΎΠ²: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π»ΠΎΠ³ΠΎΠ².
- ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ Elasticsearch: Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ Π»ΠΎΠ³ΠΎΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΡΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ.
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ Kibana: Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π΄Π°ΡΠ±ΠΎΡΠ΄Ρ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½ΡΡ .
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ FastAPI: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ
loguru, Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π»ΠΎΠ³ΠΎΠ² Π² Logstash.
ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Sentry, Prometheus ΠΈ ELK-ΡΡΠ΅ΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠ°Π±ΠΎΡΠ΅ Π²Π°ΡΠ΅Π³ΠΎ FastAPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅:
- Π ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Sentry.
- Π‘ΠΎΠ±ΠΈΡΠ°ΡΡ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Ρ Prometheus.
- Π₯ΡΠ°Π½ΠΈΡΡ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΎΠ³ΠΈ Π² ELK Π΄Π»Ρ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ² ΠΈ Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΠΌΠ΅ΡΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΊΡΡΠ³Π»ΠΎΡΡΡΠΎΡΠ½ΡΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ Π°Π½Π°Π»ΠΈΠ·, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π²Π°ΠΌ Π±ΡΡΡΡΠΎ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π»ΡΠ±ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ Π±ΠΈΠ·Π½Π΅ΡΠ°
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΊΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠ°ΠΊ Sentry, Prometheus ΠΈ ELK, ΠΏΡΠΈΠ½ΠΎΡΠΈΡ Π²Π°ΡΠ΅ΠΌΡ Π±ΠΈΠ·Π½Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΡΠ³ΠΎΠ΄Ρ:
- Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠΊΠΎΠ²: ΠΡΡΡΡΠΎΠ΅ Π²ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠ΅ ΠΏΠΎΡΠ΅ΡΠΈ.
- Π£Π»ΡΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΏΡΡΠ°ΡΠΈΠΈ: ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π΄ΠΎΠ²Π΅ΡΠΈΠ΅ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
- ΠΡΡΡΠ΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ: ΠΠ΅ΡΡΠΈΠΊΠΈ ΠΈ Π»ΠΎΠ³ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ ΡΠ·ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠ° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ.
- Π ΠΎΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ: Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΠΈΡΡ ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π±Π°Π³ΠΎΠ² ΠΈ Π±ΠΎΠ»ΡΡΠ΅ β Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ FastAPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β ΡΡΠΎ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΈΡ Π² Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΡΠΏΠ΅Ρ Π²Π°ΡΠ΅Π³ΠΎ Π±ΠΈΠ·Π½Π΅ΡΠ°. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Sentry, Prometheus ΠΈ ELK, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ°Ρ Π²Π°ΠΌ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ Π²Π°ΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ±ΠΎΠ΅Π² ΠΈ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π² ΠΏΡΠΈΠ½ΡΡΠΈΠΈ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ. ΠΠ΅ ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°ΠΉΡΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΠΈ β Π½Π°ΡΠ½ΠΈΡΠ΅ ΡΠΆΠ΅ ΡΠ΅Π³ΠΎΠ΄Π½Ρ, ΡΡΠΎΠ±Ρ Π·Π°Π²ΡΡΠ° Π±ΡΡΡ Π½Π° ΡΠ°Π³ Π²ΠΏΠ΅ΡΠ΅Π΄ΠΈ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΎΠ²!
ΠΠΎΠ»ΡΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΡ ΠΈ Π½Π°ΡΠ½ΠΈΡΠ΅ Π²Π½Π΅Π΄ΡΡΡΡ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΡ Π² ΡΠ²ΠΎΠ΅ FastAPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅!




