--- /dev/null
+# ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ yield
+
+FastAPI ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ <abbr title='ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΊΠ°ΠΊ "exit", "cleanup", "teardown", "close", "context managers", ...'>Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ</abbr>.
+
+ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ `yield` Π²ΠΌΠ΅ΡΡΠΎ `return`, Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π½Π°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅ Π½Π΅Π³ΠΎ.
+
+!!! tip "ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°"
+ ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ `yield` ΠΎΠ΄ΠΈΠ½-Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ°Π·.
+
+!!! note "Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ"
+ ΠΡΠ±Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ:
+
+ * <a href="https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager" class="external-link" target="_blank">`@contextlib.contextmanager`</a> ΠΈΠ»ΠΈ
+ * <a href="https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager" class="external-link" target="_blank">`@contextlib.asynccontextmanager`</a>
+
+ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ **FastAPI**-Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
+
+ ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, FastAPI ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡ ΠΏΠ°ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² "ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ".
+
+## ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Ρ ΠΏΠΎΠΌΠΎΡΡΡ `yield`
+
+ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΡΡΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
ΠΈ Π·Π°ΠΊΡΡΡΡ Π΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ.
+
+ΠΠ΅ΡΠ΅Π΄ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠ²Π΅ΡΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ΄ Π΄ΠΎ ΠΈ Π²ΠΊΠ»ΡΡΠ°Ρ `yield`.
+
+```Python hl_lines="2-4"
+{!../../../docs_src/dependencies/tutorial007.py!}
+```
+
+ΠΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΡΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
+
+```Python hl_lines="4"
+{!../../../docs_src/dependencies/tutorial007.py!}
+```
+
+ΠΠΎΠ΄, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ `yield`, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΎΡΠ²Π΅ΡΠ°:
+
+```Python hl_lines="5-6"
+{!../../../docs_src/dependencies/tutorial007.py!}
+```
+
+!!! tip "ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°"
+ ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ `async` ΡΠ°ΠΊ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
+
+ **FastAPI** ΡΡΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΈ Π² ΠΎΠ±ΠΎΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
Π±ΡΠ΄Π΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ.
+
+## ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Ρ `yield` ΠΈ `try` ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ
+
+ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π»ΠΎΠΊ `try` Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ `yield`, ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ Π²ΡΡΠΊΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ Π²ΡΠ±ΡΠΎΡΠ΅Π½ΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
+
+ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠΎΠ΄ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅, Π² Π΄ΡΡΠ³ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ»ΠΈ Π² *ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΡΠΈ*, ΡΠ΄Π΅Π»Π°Π» "ΠΎΡΠΊΠ°Ρ" ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π» Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΡΡ ΠΎΡΠΈΠ±ΠΊΡ, ΡΠΎ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ²ΠΎΠ΅ΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
+
+Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²Π½ΡΡΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ `except SomeException`.
+
+Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `finally`, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°Π³ΠΈ ΠΏΡΠΈ Π²ΡΡ
ΠΎΠ΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, Π±ΡΠ»ΠΎ Π»ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π΅Ρ.
+
+```Python hl_lines="3 5"
+{!../../../docs_src/dependencies/tutorial007.py!}
+```
+
+## ΠΠΎΠ΄Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ `yield`
+
+ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ΄Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈ "Π΄Π΅ΡΠ΅Π²ΡΡ" ΠΏΠΎΠ΄Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ ΡΠΎΡΠΌΡ, ΠΈ Π»ΡΠ±Π°Ρ ΠΈΠ· Π½ΠΈΡ
ΠΈΠ»ΠΈ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `yield`.
+
+**FastAPI** Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ "ΠΊΠΎΠ΄ ΠΏΠΎ Π²ΡΡ
ΠΎΠ΄Ρ" Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ `yield` Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΡΡ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
+
+ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, `dependency_c` ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ `dependency_b`, Π° `dependency_b` ΠΎΡ `dependency_a`:
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="6 14 22"
+ {!> ../../../docs_src/dependencies/tutorial008_an_py39.py!}
+ ```
+
+=== "Python 3.6+"
+
+ ```Python hl_lines="5 13 21"
+ {!> ../../../docs_src/dependencies/tutorial008_an.py!}
+ ```
+
+=== "Python 3.6+ Π±Π΅Π· Annotated"
+
+ !!! tip "ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°"
+ ΠΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π΅ΡΡΠΈΡ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
+
+ ```Python hl_lines="4 12 20"
+ {!> ../../../docs_src/dependencies/tutorial008.py!}
+ ```
+
+Π Π²ΡΠ΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `yield`.
+
+Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ `dependency_c` Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π²ΡΡ
ΠΎΠ΄Π° Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· `dependency_b` (Π·Π΄Π΅ΡΡ `dep_b`) Π±ΡΠ»ΠΎ Π΅ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ.
+
+Π, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, `dependency_b` Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· `dependency_a` (Π·Π΄Π΅ΡΡ `dep_a`) Π±ΡΠ»ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π΄Π»Ρ Π΅Π΅ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="18-19 26-27"
+ {!> ../../../docs_src/dependencies/tutorial008_an_py39.py!}
+ ```
+
+=== "Python 3.6+"
+
+ ```Python hl_lines="17-18 25-26"
+ {!> ../../../docs_src/dependencies/tutorial008_an.py!}
+ ```
+
+=== "Python 3.6+ Π±Π΅Π· Annotated"
+
+ !!! tip "ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°"
+ ΠΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π΅ΡΡΠΈΡ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
+
+ ```Python hl_lines="16-17 24-25"
+ {!> ../../../docs_src/dependencies/tutorial008.py!}
+ ```
+
+Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Ρ `yield`, ΡΠ°ΡΡΡ Ρ `return`, ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΈΠ· Π½ΠΈΡ
ΠΌΠΎΠ³ΡΡ Π·Π°Π²ΠΈΡΠ΅ΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°.
+
+ΠΠΈΠ±ΠΎ Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ΄Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΈΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Ρ `yield` ΠΈ Ρ.Π΄.
+
+ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ°ΠΊΠΈΠΌΠΈ Π²Π°ΠΌ ΡΠ³ΠΎΠ΄Π½ΠΎ.
+
+**FastAPI** ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
+
+!!! note "Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ"
+ ΠΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ <a href="https://docs.python.org/3/library/contextlib.html" class="external-link" target="_blank">ΠΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°ΠΌ</a> Π² Python.
+
+ **FastAPI** ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΡ
"ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ" Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΡΡ.
+
+## ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ `yield` ΠΈ `HTTPException`
+
+ΠΡ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ `yield` ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ Π±Π»ΠΎΠΊΠΎΠΌ `try`, ΠΎΡΠ»Π°Π²Π»ΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
+
+Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄Π½ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ `HTTPException` ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π² Π·Π°Π²Π΅ΡΡΠ°ΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅, ΠΏΠΎΡΠ»Π΅ `yield`.
+
+ΠΠΎΠ΄ Π²ΡΡ
ΠΎΠ΄Π° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ
Ρ `yield` Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ *ΠΏΠΎΡΠ»Π΅* ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΎΡΠ²Π΅ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ [ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ](../handling-errors.md#install-custom-exception-handlers){.internal-link target=_blank} ΡΠΆΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½. Π ΠΊΠΎΠ΄Π΅ Π²ΡΡ
ΠΎΠ΄Π° (ΠΏΠΎΡΠ»Π΅ `yield`) Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ, ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π±ΡΠΎΡΠ΅Π½Π½ΡΠ΅ Π²Π°ΡΠΈΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ.
+
+Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ `yield` Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ `HTTPException`, ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ (ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ) ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΡΠ²Π°Π΅Ρ `HTTPException` ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠ²Π΅Ρ HTTP 400, ΡΠΆΠ΅ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΠΈΡΡ ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
+
+ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ Π²ΡΠ΅, ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π°Π½Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΠ), ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ½ΠΎΠ²ΡΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ.
+
+Π€ΠΎΠ½ΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ *ΠΏΠΎΡΠ»Π΅* ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΎΡΠ²Π΅ΡΠ°. ΠΠΎΡΡΠΎΠΌΡ Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ΄Π½ΡΡΡ `HTTPException`, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅Ρ Π΄Π°ΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΆΠ΅ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΎΡΠ²Π΅Ρ.
+
+ΠΠΎ Π΅ΡΠ»ΠΈ ΡΠΎΠ½ΠΎΠ²Π°Ρ Π·Π°Π΄Π°ΡΠ° ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ Π² ΠΠ, ΡΠΎ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΡΠΊΠ°Ρ ΠΈΠ»ΠΈ ΡΠΈΡΡΠΎ Π·Π°ΠΊΡΡΡΡ ΡΠ΅ΡΡΠΈΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ `yield`, Π° ΡΠ°ΠΊΠΆΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°Π½Π΅ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ Π² ΠΆΡΡΠ½Π°Π» ΠΈΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΎ Π½Π΅ΠΉ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ.
+
+ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ, ΠΊΠ°ΠΊ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ°ΠΌΡΡ ΠΎΠ±ΡΡΠ½ΡΡ/"ΠΏΠΈΡΠΎΠ½ΡΡΡΡ" Π²Π΅ΡΡ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π±Π»ΠΎΠΊ `try` Π² ΡΡΠΎΡ ΡΡΠ°ΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°.
+
+ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ *Π΄ΠΎ* Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΎΡΠ²Π΅ΡΠ° ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ²Π΅Ρ, Π΄Π°ΠΆΠ΅ Π²ΡΠ·ΡΠ²Π°Ρ `HTTPException`, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ [CΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ](../handling-errors.md#install-custom-exception-handlers){.internal-link target=_blank}.
+
+!!! tip "ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°"
+ ΠΡ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ `HTTPException`, *Π΄ΠΎ* `yield`. ΠΠΎ Π½Π΅ ΠΏΠΎΡΠ»Π΅.
+
+ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠ°Ρ, ΠΊΠ°ΠΊ Π½Π° ΡΡΠΎΠΉ ΡΡ
Π΅ΠΌΠ΅. ΠΡΠ΅ΠΌΡ ΡΠ΅ΡΠ΅Ρ ΡΠ²Π΅ΡΡ
Ρ Π²Π½ΠΈΠ·. Π ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ - ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ°ΡΡΠ΅ΠΉ, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΡ
Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ
ΠΊΠΎΠ΄.
+
+```mermaid
+sequenceDiagram
+
+participant client as Client
+participant handler as Exception handler
+participant dep as Dep with yield
+participant operation as Path Operation
+participant tasks as Background tasks
+
+ Note over client,tasks: Can raise exception for dependency, handled after response is sent
+ Note over client,operation: Can raise HTTPException and can change the response
+ client ->> dep: Start request
+ Note over dep: Run code up to yield
+ opt raise
+ dep -->> handler: Raise HTTPException
+ handler -->> client: HTTP error response
+ dep -->> dep: Raise other exception
+ end
+ dep ->> operation: Run dependency, e.g. DB session
+ opt raise
+ operation -->> dep: Raise HTTPException
+ dep -->> handler: Auto forward exception
+ handler -->> client: HTTP error response
+ operation -->> dep: Raise other exception
+ dep -->> handler: Auto forward exception
+ end
+ operation ->> client: Return response to client
+ Note over client,operation: Response is already sent, can't change it anymore
+ opt Tasks
+ operation -->> tasks: Send background tasks
+ end
+ opt Raise other exception
+ tasks -->> dep: Raise other exception
+ end
+ Note over dep: After yield
+ opt Handle other exception
+ dep -->> dep: Handle exception, can't change response. E.g. close DB session.
+ end
+```
+
+!!! info "ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ"
+ ΠΠ»ΠΈΠ΅Π½ΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ **ΠΎΠ΄ΠΈΠ½ ΠΎΡΠ²Π΅Ρ**. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΡΠ²Π΅ΡΠΎΠ² ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΈΠ»ΠΈ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²Π΅Ρ ΠΎΡ *ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΡΠΈ*.
+
+ ΠΠΎΡΠ»Π΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΡΠΈΡ
ΠΎΡΠ²Π΅ΡΠΎΠ² Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΎΡΠ²Π΅Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½.
+
+!!! tip "ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°"
+ ΠΠ° ΡΡΠΎΠΉ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ "HttpException", Π½ΠΎ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ·Π²Π°ΡΡ Π»ΡΠ±ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ [ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ](../handling-errors.md#install-custom-exception-handlers){.internal-link target=_blank}.
+
+ ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΎΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌ Ρ yield, Π²ΠΊΠ»ΡΡΠ°Ρ `HttpException`, Π° Π·Π°ΡΠ΅ΠΌ **ΡΠ½ΠΎΠ²Π°** ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. ΠΡΠ»ΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΡΠΎ ΠΎΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ "ServerErrorMiddleware" ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΌ ΠΊΠΎΠ΄ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ HTTP 500, ΡΡΠΎΠ±Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΡΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°.
+
+## ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ `yield`, `HTTPException` ΠΈ ΡΠΎΠ½ΠΎΠ²ΡΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ
+
+!!! warning "ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅"
+ Π‘ΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Ρ ΡΡΠΈ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΡΡΠΎΡ ΡΠ°Π·Π΄Π΅Π» ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π½ΠΈΠΆΠ΅.
+
+ ΠΡΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ, Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π²Π΅ΡΡΠΈΡ FastAPI Π΄ΠΎ 0.106.0 ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ΅ΡΡΡΡΡ ΠΈΠ· Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Ρ `yield` Π² ΡΠΎΠ½ΠΎΠ²ΡΡ
Π·Π°Π΄Π°ΡΠ°Ρ
.
+
+ΠΠΎ Π²Π΅ΡΡΠΈΠΈ FastAPI 0.106.0 Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ `yield` Π±ΡΠ»ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ΄ Π²ΡΡ
ΠΎΠ΄Π° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ
Ρ `yield` Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΡΡ *ΠΏΠΎΡΠ»Π΅* ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΎΡΠ²Π΅ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ [ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΡΠΈΠ±ΠΎΠΊ](../handling-errors.md#install-custom-exception-handlers){.internal-link target=_blank} ΡΠΆΠ΅ Π±ΡΠ» Π±Ρ Π·Π°ΠΏΡΡΠ΅Π½.
+
+ΠΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, "ΠΎΡΠ΄Π°Π½Π½ΡΠ΅" Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ, Π²Π½ΡΡΡΠΈ ΡΠΎΠ½ΠΎΠ²ΡΡ
Π·Π°Π΄Π°Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠ΄ Π²ΡΡ
ΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ½ΠΎΠ²ΡΡ
Π·Π°Π΄Π°Ρ.
+
+Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π»ΠΎ Π±Ρ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΠ° Π² ΡΠ΅ΡΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅Π½ΡΠΆΠ½ΠΎΠ΅ ΡΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π΄ΠΎΡ
ΠΎΠ΄Π½ΠΎΡΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
), ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π² FastAPI 0.106.0.
+
+!!! tip "ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°"
+
+ ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΎΠ½ΠΎΠ²Π°Ρ Π·Π°Π΄Π°ΡΠ° ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ Π½Π°Π±ΠΎΡ Π»ΠΎΠ³ΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ, ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
).
+ Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΡΡΠΉ ΠΊΠΎΠ΄.
+
+ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ»Π°Π³Π°Π»ΠΈΡΡ Π½Π° ΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅ΡΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ½ΠΎΠ²ΡΡ
Π·Π°Π΄Π°Ρ Π²Π½ΡΡΡΠΈ ΡΠ°ΠΌΠΎΠΉ ΡΠΎΠ½ΠΎΠ²ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ, Π° Π²Π½ΡΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Ρ `yield`.
+
+ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡ ΠΆΠ΅ ΡΠ΅ΡΡΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
, Π²Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ Π½ΠΎΠ²ΡΡ ΡΠ΅ΡΡΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Π²Π½ΡΡΡΠΈ ΡΠΎΠ½ΠΎΠ²ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΈ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ ΡΠ΅ΡΡΠΈΠΈ. Π Π·Π°ΡΠ΅ΠΌ, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΠ½ΠΎΠ²ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ, Π²Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ½ΠΎΠ²Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ½ΠΎΠ²ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ.
+
+## ΠΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ
+
+### Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ "ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ"
+
+"ΠΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ" - ΡΡΠΎ Π»ΡΠ±ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Python, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ `with`.
+
+ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, <a href="https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files" class="external-link" target="_blank">ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `with` Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°</a>:
+
+```Python
+with open("./somefile.txt") as f:
+ contents = f.read()
+ print(contents)
+```
+
+ΠΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ" open("./somefile.txt") ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ "ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ".
+
+ΠΠΎΠ³Π΄Π° Π±Π»ΠΎΠΊ `with` Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ, ΠΎΠ½ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ», Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π±ΡΠ»ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
+
+ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ `yield`, **FastAPI** Π²Π½ΡΡΡΠ΅Π½Π½Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π΅Π΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
+
+### ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ
Ρ ΠΏΠΎΠΌΠΎΡΡΡ `yield`
+
+!!! warning "ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅"
+ ΠΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ "ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠ°Ρ" ΠΈΠ΄Π΅Ρ.
+
+ ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ **FastAPI**, ΡΠΎ Π»ΡΡΡΠ΅ ΠΏΠΎΠΊΠ° ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΡΡΠΎΡ ΠΏΡΠ½ΠΊΡ.
+
+Π Python Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ <a href="https://docs.python.org/3/reference/datamodel.html#context-managers" class="external-link" target="_blank">ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ»Π°ΡΡ Ρ Π΄Π²ΡΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ: `__enter__()` ΠΈ `__exit__()`</a>.
+
+ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ
Π²Π½ΡΡΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ **FastAPI** Ρ `yield`, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
+`with` ΠΈΠ»ΠΈ `async with` Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
+
+```Python hl_lines="1-9 13"
+{!../../../docs_src/dependencies/tutorial010.py!}
+```
+
+!!! tip "ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°"
+ ΠΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° - Ρ ΠΏΠΎΠΌΠΎΡΡΡ:
+
+ * <a href="https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager" class="external-link" target="_blank">`@contextlib.contextmanager`</a> ΠΈΠ»ΠΈ
+ * <a href="https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager" class="external-link" target="_blank">`@contextlib.asynccontextmanager`</a>
+
+ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΡ
Π΄Π»Ρ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΎΠ΄Π½ΠΈΠΌ `yield`.
+
+ ΠΡΠΎ ΡΠΎ, ΡΡΠΎ **FastAPI** ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²Π½ΡΡΡΠΈ ΡΠ΅Π±Ρ Π΄Π»Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Ρ `yield`.
+
+ ΠΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Π΄Π»Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ FastAPI Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ (Π΄Π° ΠΈ Π½Π΅ ΡΡΠΎΠΈΡ).
+
+ FastAPI ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π·Π° Π²Π°Ρ Π½Π° Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΡΡΠΎΠ²Π½Π΅.