--- /dev/null
+# yieldλ₯Ό μ¬μ©νλ μμ‘΄μ±
+
+FastAPIλ <abbr title='λλ‘λ "μ’
λ£ μ½λ", "μ 리 μ½λ", "μ’
λ£ μ²λ¦¬ μ½λ", "λ«κΈ° μ½λ", "컨ν
μ€νΈ κ΄λ¦¬μ μ’
λ£ μ½λ" λ±μΌλ‘λ λΆλ¦½λλ€'>μμ
μλ£ ν μΆκ° λ¨κ³λ₯Ό μννλ</abbr> μμ‘΄μ±μ μ§μν©λλ€.
+
+μ΄λ₯Ό ꡬννλ €λ©΄ `return` λμ `yield`λ₯Ό μ¬μ©νκ³ , μΆκ°λ‘ μ€νν λ¨κ³ (μ½λ)λ₯Ό κ·Έ λ€μ μμ±νμΈμ.
+
+/// 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`λ¬Έμ ν¬ν¨νμ¬ κ·Έ μ΄μ μ μ½λλ§μ΄ μ€νλ©λλ€:
+
+{* ../../docs_src/dependencies/tutorial007.py hl[2:4] *}
+
+yieldλ κ°μ *κ²½λ‘ μμ
* λ° λ€λ₯Έ μμ‘΄μ±λ€μ μ£Όμ
λλ κ° μ
λλ€:
+
+{* ../../docs_src/dependencies/tutorial007.py hl[4] *}
+
+`yield`λ¬Έ λ€μμ μ½λλ μλ΅μ μμ±ν ν 보λ΄κΈ° μ μ μ€νλ©λλ€:
+
+{* ../../docs_src/dependencies/tutorial007.py hl[5:6] *}
+
+/// tip | ν
+
+`async` ν¨μμ μΌλ° ν¨μ λͺ¨λ μ¬μ©ν μ μμ΅λλ€.
+
+**FastAPI**λ μΌλ° μμ‘΄μ±κ³Ό λ§μ°¬κ°μ§λ‘ κ°κ°μ ν¨μλ₯Ό μ¬λ°λ₯΄κ² μ²λ¦¬ν κ²μ
λλ€.
+
+///
+
+## `yield`μ `try`λ₯Ό μ¬μ©νλ μμ‘΄μ±
+
+`yield`λ₯Ό μ¬μ©νλ μμ‘΄μ±μμ `try` λΈλ‘μ μ¬μ©νλ€λ©΄, μμ‘΄μ±μ μ¬μ©νλ λμ€ λ°μν λͺ¨λ μμΈλ₯Ό λ°μ μ μμ΅λλ€.
+
+μλ₯Ό λ€μ΄, λ€λ₯Έ μμ‘΄μ±μ΄λ *κ²½λ‘ μμ
*μ μ€κ°μ λ°μ΄ν°λ² μ΄μ€ νΈλμμ
"λ‘€λ°±"μ΄ λ°μνκ±°λ λ€λ₯Έ μ€λ₯κ° λ°μνλ€λ©΄, ν΄λΉ μμΈλ₯Ό μμ‘΄μ±μμ λ°μ μ μμ΅λλ€.
+
+λ°λΌμ, μμ‘΄μ± λ΄μμ `except SomeException`μ μ¬μ©νμ¬ νΉμ μμΈλ₯Ό μ²λ¦¬ν μ μμ΅λλ€.
+
+λ§μ°¬κ°μ§λ‘, `finally`λ₯Ό μ¬μ©νμ¬ μμΈ λ°μ μ¬λΆμ κ΄κ³ μμ΄ μ’
λ£ λ¨κ³κΉ μ€νλλλ‘ ν μ μμ΅λλ€.
+
+{* ../../docs_src/dependencies/tutorial007.py hl[3,5] *}
+
+## `yield`λ₯Ό μ¬μ©νλ νμ μμ‘΄μ±
+
+λͺ¨λ ν¬κΈ°μ ννμ νμ μμ‘΄μ±κ³Ό νμ μμ‘΄μ±μ "νΈλ¦¬"λ κ°μ§ μ μμΌλ©°, μ΄λ€ λͺ¨λκ° `yield`λ₯Ό μ¬μ©ν μ μμ΅λλ€.
+
+**FastAPI**λ `yield`λ₯Ό μ¬μ©νλ κ° μμ‘΄μ±μ "μ’
λ£ μ½λ"κ° μ¬λ°λ₯Έ μμλ‘ μ€νλλλ‘ λ³΄μ₯ν©λλ€.
+
+μλ₯Ό λ€μ΄, `dependency_c`λ `dependency_b`μ μμ‘΄ν μ μκ³ , `dependency_b`λ `dependency_a`μ μμ‘΄ν μ μμ΅λλ€.
+
+{* ../../docs_src/dependencies/tutorial008_an_py39.py hl[6,14,22] *}
+
+μ΄λ€ λͺ¨λλ `yield`λ₯Ό μ¬μ©ν μ μμ΅λλ€.
+
+μ΄ κ²½μ° `dependency_c`λ μ’
λ£ μ½λλ₯Ό μ€ννκΈ° μν΄, `dependency_b`μ κ° (μ¬κΈ°μλ `dep_b`λ‘ λͺ
λͺ
)μ΄ μ¬μ ν μ¬μ© κ°λ₯ν΄μΌ ν©λλ€.
+
+κ·Έλ¦¬κ³ , `dependency_b`λ μ’
λ£ μ½λλ₯Ό μν΄ `dependency_a`μ κ° (μ¬κΈ°μλ `dep_a`λ‘ λͺ
λͺ
) μ΄ μ¬μ© κ°λ₯ν΄μΌ ν©λλ€.
+
+{* ../../docs_src/dependencies/tutorial008_an_py39.py hl[18:19,26:27] *}
+
+κ°μ λ°©μμΌλ‘, `yield`λ₯Ό μ¬μ©νλ μμ‘΄μ±κ³Ό `return`μ μ¬μ©νλ μμ‘΄μ±μ ν¨κ» μ¬μ©ν μ μμΌλ©°, μ΄λ€ μ€ μΌλΆκ° λ€λ₯Έ κ²λ€μ μμ‘΄ν μ μμ΅λλ€.
+
+κ·Έλ¦¬κ³ `yield`λ₯Ό μ¬μ©νλ λ€λ₯Έ μ¬λ¬ μμ‘΄μ±μ νμλ‘ νλ λ¨μΌ μμ‘΄μ±μ κ°μ§ μλ μμ΅λλ€.
+
+μνλ μμ‘΄μ±μ μνλ λλ‘ μ‘°ν©ν μ μμ΅λλ€.
+
+**FastAPI**λ λͺ¨λ κ²μ΄ μ¬λ°λ₯Έ μμλ‘ μ€νλλλ‘ λ³΄μ₯ν©λλ€.
+
+/// note | κΈ°μ μΈλΆμ¬ν
+
+νμ΄μ¬μ <a href=βhttps://docs.python.org/3/library/contextlib.htmlβ class=βexternal-linkβ target=β_blankβ>Context Managers</a> λλΆμ μ΄ κΈ°λ₯μ΄ μλν©λλ€.
+
+**FastAPI**λ μ΄λ₯Ό λ΄λΆμ μΌλ‘ 컨ν
μ€νΈ κ΄λ¦¬μλ₯Ό μ¬μ©νμ¬ κ΅¬νν©λλ€.
+
+///
+
+## `yield`μ `HTTPException`λ₯Ό μ¬μ©νλ μμ‘΄μ±
+
+`yield`μ `try` λΈλ‘μ΄ μλ μμ‘΄μ±μ μ¬μ©νμ¬ μμΈλ₯Ό μ²λ¦¬ν μ μλ€λ κ²μ μκ² λμμ΅λλ€.
+
+κ°μ λ°©μμΌλ‘, `yield` μ΄νμ μ’
λ£ μ½λμμ `HTTPException`μ΄λ μ μ¬ν μμΈλ₯Ό λ°μμν¬ μ μμ΅λλ€.
+
+/// tip | ν
+
+μ΄λ λ€μ κ³ κΈ κΈ°μ μ΄λ©°, λλΆλΆμ κ²½μ° κ²½λ‘ μ°μ° ν¨μ λ± λλ¨Έμ§ μ ν리μΌμ΄μ
μ½λ λ΄λΆμμ μμΈ (`HTTPException` ν¬ν¨)λ₯Ό λ°μμν¬ μ μμΌλ―λ‘ μ€μ λ‘λ νμνμ§ μμ κ²μ
λλ€.
+
+νμ§λ§ νμν κ²½μ° μ¬μ©ν μ μμ΅λλ€. π€
+
+///
+
+{* ../../docs_src/dependencies/tutorial008b_an_py39.py hl[18:22,31] *}
+
+μμΈλ₯Ό μ²λ¦¬νκ³ (λλ μΆκ°λ‘ λ€λ₯Έ `HTTPException`μ λ°μμν€κΈ° μν΄) μ¬μ©ν μ μλ λ λ€λ₯Έ λ°©λ²μ [μ¬μ©μ μ μ μμΈ μ²λ¦¬κΈ°](../handling-errors.md#install-custom-exception-handlers){.internal-link target=_blank}λ₯Ό μμ±νλ κ² μ
λλ€.
+
+## `yield`μ `except`λ₯Ό μ¬μ©νλ μμ‘΄μ±
+
+`yield`λ₯Ό μ¬μ©νλ μμ‘΄μ±μμ `except`λ₯Ό μ¬μ©νμ¬ μμΈλ₯Ό ν¬μ°©νκ³ μμΈλ₯Ό λ€μ λ°μμν€μ§ μκ±°λ (λλ μ μμΈλ₯Ό λ°μμν€μ§ μμΌλ©΄), FastAPIλ ν΄λΉ μμΈκ° λ°μνλμ§ μ μ μμ΅λλ€. μ΄λ μΌλ°μ μΈ Python λ°©μκ³Ό λμΌν©λλ€:
+
+{* ../../docs_src/dependencies/tutorial008c_an_py39.py hl[15:16] *}
+
+μ΄ κ²½μ°, `HTTPException`μ΄λ μ μ¬ν μμΈλ₯Ό λ°μμν€μ§ μκΈ° λλ¬Έμ ν΄λΌμ΄μΈνΈλ HTTP 500 Internal Server Error μλ΅μ λ³΄κ² λμ§λ§, μλ²λ μ΄λ€ μ€λ₯κ° λ°μνλμ§μ λν **λ‘κ·Έ**λ λ€λ₯Έ νμλ₯Ό μ ν κ°μ§μ§ μκ² λ©λλ€. π±
+
+### `yield`μ `except`λ₯Ό μ¬μ©νλ μμ‘΄μ±μμ νμ `raise` νκΈ°
+
+`yield`κ° μλ μμ‘΄μ±μμ μμΈλ₯Ό μ‘μμ λλ `HTTPException`μ΄λ μ μ¬ν μμΈλ₯Ό μλ‘ λ°μμν€μ§ μλ ν, λ°λμ μλμ μμΈλ₯Ό λ€μ λ°μμμΌμΌ ν©λλ€.
+
+`raise`λ₯Ό μ¬μ©νμ¬ λμΌν μμΈλ₯Ό λ€μ λ°μμν¬ μ μμ΅λλ€:
+
+{* ../../docs_src/dependencies/tutorial008d_an_py39.py hl[17] *}
+
+μ΄μ ν΄λΌμ΄μΈνΈλ λμΌν *HTTP 500 Internal Server Error* μ€λ₯ μλ΅μ λ°κ² λμ§λ§, μλ² λ‘κ·Έμλ μ¬μ©μ μ μ μμΈμΈ `InternalError"κ° κΈ°λ‘λ©λλ€. π
+
+## `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,operation: Can raise exceptions, including HTTPException
+ client ->> dep: Start request
+ Note over dep: Run code up to yield
+ opt raise Exception
+ dep -->> handler: Raise Exception
+ handler -->> client: HTTP error response
+ end
+ dep ->> operation: Run dependency, e.g. DB session
+ opt raise
+ operation -->> dep: Raise Exception (e.g. HTTPException)
+ opt handle
+ dep -->> dep: Can catch exception, raise a new HTTPException, raise other exception
+ end
+ handler -->> client: HTTP error response
+ 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 -->> tasks: Handle exceptions in the background task code
+ end
+```
+
+/// info | μ 보
+
+ν΄λΌμ΄μΈνΈμ **νλμ μλ΅** λ§ μ μ‘λ©λλ€. μ΄λ μ€λ₯ μλ΅ μ€ νλμΌ μλ μκ³ ,*κ²½λ‘ μμ
*μμ μμ±λ μλ΅μΌ μλ μμ΅λλ€.
+
+μ΄λ¬ν μλ΅ μ€ νλκ° μ μ‘λ νμλ λ€λ₯Έ μλ΅μ λ³΄λΌ μ μμ΅λλ€.
+
+///
+
+/// tip | ν
+
+μ΄ λ€μ΄μ΄κ·Έλ¨μ `HTTPException`μ 보μ¬μ£Όμ§λ§, `yield`λ₯Ό μ¬μ©νλ μμ‘΄μ±μμ μ²λ¦¬ν μμΈλ [μ¬μ©μ μ μ μμΈμ²λ¦¬κΈ°](../handling-errors.md#install-custom-exception-handlers){.internal-link target=_blank}.λ₯Ό μ¬μ©νμ¬ μ²λ¦¬ν λ€λ₯Έ μμΈλ λ°μμν¬ μ μμ΅λλ€.
+
+μ΄λ€ μμΈκ° λ°μνλ , `HTTPException`μ ν¬ν¨νμ¬ yieldλ₯Ό μ¬μ©νλ μμ‘΄μ±μΌλ‘ μ λ¬λ©λλ€. λλΆλΆμ κ²½μ° μμΈλ₯Ό λ€μ λ°μμν€κ±°λ μλ‘μ΄ μμΈλ₯Ό λ°μμμΌμΌ ν©λλ€.
+
+///
+
+## `yield`, `HTTPException`, `except` λ° λ°±κ·ΈλΌμ΄λ μμ
μ μ¬μ©νλ μμ‘΄μ±
+
+/// warning | κ²½κ³
+
+μ΄λ¬ν κΈ°μ μ μΈλΆ μ¬νμ λλΆλΆ νμνμ§ μμΌλ―λ‘ μ΄ μΉμ
μ 건λλ°κ³ μλμμ κ³μ μ§νν΄λ λ©λλ€.
+
+μ΄λ¬ν μΈλΆ μ 보λ μ£Όλ‘ FastAPI 0.106.0 μ΄μ λ²μ μμ `yield`κ° μλ μμ‘΄μ±μ 리μμ€λ₯Ό λ°±κ·ΈλΌμ΄λ μμ
μμ μ¬μ©νλ κ²½μ°λ© μ μ©ν©λλ€.
+
+///
+
+### `yield`μ `except`λ₯Ό μ¬μ©νλ μμ‘΄μ±, κΈ°μ μΈλΆμ¬ν
+
+FastAPI 0.110.0 μ΄μ μλ `yield`κ° ν¬ν¨λ μμ‘΄μ±μ μ¬μ©ν ν ν΄λΉ μμ‘΄μ±μμ `except`κ° ν¬ν¨λ μμΈλ₯Ό μΊ‘μ²νκ³ λ€μ μμΈλ₯Ό λ°μμν€μ§ μμΌλ©΄ μμΈκ° μλμΌλ‘ μμΈ νΈλ€λ¬ λλ λ΄λΆ μλ² μ€λ₯ νΈλ€λ¬λ‘ λ°μ/μ λ¬λμμ΅λλ€.
+
+μ΄λ μ²λ¦¬κΈ° μμ΄ μ λ¬λ μμΈ(λ΄λΆ μλ² μ€λ₯)μμ μ²λ¦¬λμ§ μμ λ©λͺ¨λ¦¬ μλΉλ₯Ό μμ νκ³ μΌλ° νμ΄μ¬ μ½λμ λμκ³Ό μΌμΉνλλ‘ νκΈ° μν΄ 0.110.0 λ²μ μμ λ³κ²½λμμ΅λλ€.
+
+### λ°±κ·ΈλΌμ΄λ μμ
κ³Ό `yield`λ₯Ό μ¬μ©νλ μμ‘΄μ±, κΈ°μ μΈλΆμ¬ν
+
+FastAPI 0.106.0 μ΄μ μλ `yield` μ΄νμ μμΈλ₯Ό λ°μμν€λ κ²μ΄ λΆκ°λ₯νμ΅λλ€. `yield`κ° μλ μμ‘΄μ± μ’
λ£ μ½λλ μλ΅μ΄ μ μ‘λ μ΄νμ μ€νλμκΈ° λλ¬Έμ, [μμΈ μ²λ¦¬κΈ°](../handling-errors.md#install-custom-exception-handlers){.internal-link target=_blank}κ° μ΄λ―Έ μ€νλ μνμμ΅λλ€.
+
+μ΄λ μ£Όλ‘ λ°±κ·ΈλΌμ΄λ μμ
λ΄μμ μμ‘΄μ±μμ "yieldλ" λμΌν κ°μ²΄λ₯Ό μ¬μ©ν μ μλλ‘ νκΈ° μν΄ μ΄λ° λ°©μμΌλ‘ μ€κ³λμμ΅λλ€. μ’
λ£ μ½λλ λ°±κ·ΈλΌμ΄λ μμ
μ΄ μλ£λ νμ μ€νλμκΈ° λλ¬Έμ
λλ€
+
+νμ§λ§ μ΄λ κ² νλ©΄ 리μμ€λ₯Ό λΆνμνκ² μ보ν μμ‘΄μ±(μ: λ°μ΄ν°λ² μ΄μ€ μ°κ²°)μμ 보μ νλ©΄μ μλ΅μ΄ λ€νΈμν¬λ₯Ό ν΅ν΄ μ΄λν λκΉμ§ κΈ°λ€λ¦¬λ κ²μ μλ―ΈνκΈ° λλ¬Έμ FastAPI 0.106.0μμ λ³κ²½λμμ΅λλ€.
+
+/// tip | ν
+
+λν λ°±κ·ΈλΌμ΄λ μμ
μ μΌλ°μ μΌλ‘ μ체 리μμ€(μ: μ체 λ°μ΄ν°λ² μ΄μ€ μ°κ²°)λ₯Ό μ¬μ©νμ¬ λ³λλ‘ μ²λ¦¬ν΄μΌ νλ λ
립μ μΈ λ‘μ§ μ§ν©μ
λλ€.
+
+λ°λΌμ μ΄λ κ² νλ©΄ μ½λκ° λ κΉλν΄μ§λλ€.
+
+///
+
+λ§μ½ μ΄μ μ μ΄λ¬ν λμμ μμ‘΄νλ€λ©΄, μ΄μ λ λ°±κ·ΈλΌμ΄λ μμ
λ΄λΆμμ λ°±κ·ΈλΌμ΄λ μμ
μ μν 리μμ€λ₯Ό μμ±νκ³ , `yield`κ° μλ μμ‘΄μ±μ 리μμ€μ μμ‘΄νμ§ μλ λ°μ΄ν°λ§ λ΄λΆμ μΌλ‘ μ¬μ©ν΄μΌν©λλ€.
+
+μλ₯Ό λ€μ΄, λμΌν λ°μ΄ν°λ² μ΄μ€ μΈμ
μ μ¬μ©νλ λμ , λ°±κ·ΈλΌμ΄λ μμ
λ΄λΆμμ μλ‘μ΄ λ°μ΄ν°λ² μ΄μ€ μΈμ
μ μμ±νκ³ μ΄ μλ‘μ΄ μΈμ
μ μ¬μ©νμ¬ λ°μ΄ν°λ² μ΄μ€μμ κ°μ²΄λ₯Ό κ°μ ΈμμΌ ν©λλ€. κ·Έλ¦¬κ³ λ°μ΄ν°λ² μ΄μ€ κ°μ²΄λ₯Ό λ°±κ·ΈλΌμ΄λ μμ
ν¨μμ λ§€κ°λ³μλ‘ μ§μ μ λ¬νλ λμ , ν΄λΉ κ°μ²΄μ IDλ₯Ό μ λ¬ν λ€μ λ°±κ·ΈλΌμ΄λ μμ
ν¨μ λ΄λΆμμ κ°μ²΄λ₯Ό λ€μ κ°μ ΈμμΌ ν©λλ€
+
+## 컨ν
μ€νΈ κ΄λ¦¬μ
+
+### "컨ν
μ€νΈ κ΄λ¦¬μ"λ?
+
+"컨ν
μ€νΈ κ΄λ¦¬μ"λ 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")` λ "컨ν
μ€νΈ κ΄λ¦¬μ(Context Manager)"λΌκ³ λΆλ¦¬λ κ°μ²΄λ₯Ό μμ±ν©λλ€.
+
+`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__()` and `__exit__()`</a>.
+
+**FastAPI**μ `yield`κ° μλ μμ‘΄μ± λ΄μμ
+`with` λλ `async with`λ¬Έμ μ¬μ©νμ¬ μ΄λ€μ νμ©ν μ μμ΅λλ€:
+
+{* ../../docs_src/dependencies/tutorial010.py hl[1:9,13] *}
+
+/// 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κ° λ΄λΆμ μΌλ‘ μ΄λ₯Ό μ²λ¦¬ν΄ μ€ κ²μ
λλ€.
+
+///