committed by
GitHub
1 changed files with 129 additions and 17 deletions
@ -1,53 +1,165 @@ |
|||
# ์ด๋ฒคํธ: startup๊ณผ shutdown |
|||
# Lifespan ์ด๋ฒคํธ |
|||
|
|||
ํ์์ ๋ฐ๋ผ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์์๋๊ธฐ ์ ์ด๋ ์ข
๋ฃ๋ ๋ ์คํ๋๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ(ํจ์)๋ฅผ ์ ์ํ ์ ์์ต๋๋ค. |
|||
์ ํ๋ฆฌ์ผ์ด์
**์์ ์ **์ ์คํ๋์ด์ผ ํ๋ ๋ก์ง(์ฝ๋)์ ์ ์ํ ์ ์์ต๋๋ค. ์ด๋ ์ด ์ฝ๋๊ฐ **ํ ๋ฒ**๋ง ์คํ๋๋ฉฐ, **์ ํ๋ฆฌ์ผ์ด์
์ด ์์ฒญ์ ๋ฐ๊ธฐ ์์ํ๊ธฐ ์ **์ ์คํ๋๋ค๋ ์๋ฏธ์
๋๋ค. |
|||
|
|||
์ด ํจ์๋ค์ `async def` ๋๋ ํ๋ฒํ๊ฒ `def`์ผ๋ก ์ ์ธํ ์ ์์ต๋๋ค. |
|||
๋ง์ฐฌ๊ฐ์ง๋ก, ์ ํ๋ฆฌ์ผ์ด์
์ด **์ข
๋ฃ๋ ๋** ์คํ๋์ด์ผ ํ๋ ๋ก์ง(์ฝ๋)์ ์ ์ํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ, ์ด ์ฝ๋๋ **ํ ๋ฒ**๋ง ์คํ๋๋ฉฐ, **์ฌ๋ฌ ์์ฒญ์ ์ฒ๋ฆฌํ ํ**์ ์คํ๋ฉ๋๋ค. |
|||
|
|||
์ด ์ฝ๋๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ด **์์ฒญ์ ๋ฐ๊ธฐ ์์ํ๊ธฐ ์ ์** ์คํ๋๊ณ , ์์ฒญ ์ฒ๋ฆฌ๊ฐ ๋๋ ํ **์ข
๋ฃ ์ง์ ์** ์คํ๋๊ธฐ ๋๋ฌธ์ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
์ **์๋ช
(Lifespan)**์ ๋ค๋ฃน๋๋ค. (์ ์ ํ "์๋ช
"์ด๋ผ๋ ๋จ์ด๊ฐ ์ค์ํด์ง๋๋ค ๐) |
|||
|
|||
์ด ๋ฐฉ๋ฒ์ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
์์ ์ฌ์ฉํด์ผ ํ๋ **์์**์ ์ค์ ํ๊ฑฐ๋ ์์ฒญ ๊ฐ์ **๊ณต์ ๋๋** ์์์ ์ค์ ํ๊ณ , ๋๋ ๊ทธ ํ์ **์ ๋ฆฌ**ํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ํ ๋๋ ๊ณต์ ๋๋ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ๋ก๋ํ๋ ๊ฒฝ์ฐ์
๋๋ค. |
|||
|
|||
|
|||
## ์ฌ์ฉ ์ฌ๋ก |
|||
|
|||
๋จผ์ **์ฌ์ฉ ์ฌ๋ก**๋ฅผ ์๋ก ๋ค์ด๋ณด๊ณ , ์ด๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. |
|||
|
|||
์ฐ๋ฆฌ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ๊ณ ์ถ์ **๋จธ์ ๋ฌ๋ ๋ชจ๋ธ**์ด ์๋ค๊ณ ์์ํด ๋ด
์๋ค. ๐ค |
|||
|
|||
์ด ๋ชจ๋ธ๋ค์ ์์ฒญ ๊ฐ์ ๊ณต์ ๋๋ฏ๋ก, ์์ฒญ๋ง๋ค ๋ชจ๋ธ์ด ํ๋์ฉ ์๋ ๊ฒ์ด ์๋๋ผ, ์ฌ๋ฌ ์์ฒญ์์ ๋์ผํ ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค. |
|||
|
|||
๋ชจ๋ธ์ ๋ก๋ํ๋ ๋ฐ **์๋นํ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค๊ณ ์์ํด ๋ด
์๋ค**, ์๋ํ๋ฉด ๋ชจ๋ธ์ด **๋์คํฌ์์ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผ** ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ์์ฒญ์ ๋ํด ๋ชจ๋ธ์ ๋งค๋ฒ ๋ก๋ํ๊ณ ์ถ์ง ์์ต๋๋ค. |
|||
|
|||
๋ชจ๋/ํ์ผ์ ์ต์์์์ ๋ชจ๋ธ์ ๋ก๋ํ ์๋ ์์ง๋ง, ๊ทธ๋ฌ๋ฉด **๋ชจ๋ธ์ ๋ก๋ํ๋๋ฐ** ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์, ๋จ์ํ ์๋ํ๋ ํ
์คํธ๋ฅผ ์คํํ ๋๋ ๋ชจ๋ธ์ด ๋ก๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํด์ **ํ
์คํธ ์๋๊ฐ ๋๋ ค์ง๋๋ค**. |
|||
|
|||
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๊ณ ํ๋ ๊ฒ์
๋๋ค. ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ ์ ๋ชจ๋ธ์ ๋ก๋ํ๋, ์ ํ๋ฆฌ์ผ์ด์
์ด ์์ฒญ์ ๋ฐ๊ธฐ ์์ํ๊ธฐ ์ง์ ์๋ง ๋ก๋ํ๊ณ , ์ฝ๋๊ฐ ๋ก๋๋๋ ๋์์ ๋ก๋ํ์ง ์๋๋ก ํ๊ฒ ์ต๋๋ค. |
|||
|
|||
## Lifespan |
|||
|
|||
`FastAPI` ์ ํ๋ฆฌ์ผ์ด์
์ `lifespan` ๋งค๊ฐ๋ณ์์ "์ปจํ
์คํธ ๋งค๋์ "๋ฅผ ์ฌ์ฉํ์ฌ *์์*๊ณผ *์ข
๋ฃ* ๋ก์ง์ ์ ์ํ ์ ์์ต๋๋ค. (์ปจํ
์คํธ ๋งค๋์ ๊ฐ ๋ฌด์์ธ์ง ์ ์ ํ์ ์ค๋ช
๋๋ฆฌ๊ฒ ์ต๋๋ค.) |
|||
|
|||
์์ ๋ฅผ ํตํด ์์ํ๊ณ , ๊ทธ ํ์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. |
|||
|
|||
์ฐ๋ฆฌ๋ `yield`๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ ํจ์ `lifespan()`์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํฉ๋๋ค: |
|||
|
|||
{* ../../docs_src/events/tutorial003.py hl[16,19] *} |
|||
|
|||
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ๋ชจ๋ธ์ ๋ก๋ํ๋ ๋น์ผ *์์* ์์
์ ์๋ฎฌ๋ ์ด์
ํ๊ณ ์์ต๋๋ค. `yield` ์์์ (๊ฐ์ง) ๋ชจ๋ธ ํจ์๋ฅผ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ด ๋ด๊ธด ๋์
๋๋ฆฌ์ ๋ฃ์ต๋๋ค. ์ด ์ฝ๋๋ **์ ํ๋ฆฌ์ผ์ด์
์ด ์์ฒญ์ ๋ฐ๊ธฐ ์์ํ๊ธฐ ์ **, *์์* ๋์์ ์คํ๋ฉ๋๋ค. |
|||
|
|||
๊ทธ๋ฆฌ๊ณ `yield` ์งํ์๋ ๋ชจ๋ธ์ ์ธ๋ก๋ํฉ๋๋ค. ์ด ์ฝ๋๋ **์ ํ๋ฆฌ์ผ์ด์
์ด ์์ฒญ ์ฒ๋ฆฌ ์๋ฃ ํ**, *์ข
๋ฃ* ์ง์ ์ ์คํ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฉ๋ชจ๋ฆฌ๋ GPU์ ๊ฐ์ ์์์ ํด์ ํ๋ ์์
์ ํ ์ ์์ต๋๋ค. |
|||
|
|||
/// tip | ํ |
|||
|
|||
`shutdown`์ ์ ํ๋ฆฌ์ผ์ด์
์ **์ข
๋ฃ**ํ ๋ ๋ฐ์ํฉ๋๋ค. |
|||
|
|||
์๋ก์ด ๋ฒ์ ์ ์์ํด์ผ ํ๊ฑฐ๋, ๊ทธ๋ฅ ์คํ์ ๋ฉ์ถ๊ณ ์ถ์ ์๋ ์์ต๋๋ค. ๐คท |
|||
|
|||
/// |
|||
|
|||
### Lifespan ํจ์ |
|||
|
|||
๋จผ์ ์ฃผ๋ชฉํ ์ ์, `yield`๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ ํจ์(async function)๋ฅผ ์ ์ํ๊ณ ์๋ค๋ ๊ฒ์
๋๋ค. ์ด๋ `yield`๋ฅผ ์ฌ์ฉํ ์์กด์ฑ๊ณผ ๋งค์ฐ ์ ์ฌํฉ๋๋ค. |
|||
|
|||
{* ../../docs_src/events/tutorial003.py hl[14:19] *} |
|||
|
|||
ํจ์์ ์ฒซ ๋ฒ์งธ ๋ถ๋ถ, ์ฆ `yield` ์ด์ ์ ์ฝ๋๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ์์๋๊ธฐ **์ ์** ์คํ๋ฉ๋๋ค. |
|||
|
|||
๊ทธ๋ฆฌ๊ณ `yield` ์ดํ์ ๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์
์ด ์๋ฃ๋ ํ **๋์ค์** ์คํ๋ฉ๋๋ค. |
|||
|
|||
### ๋น๋๊ธฐ ์ปจํ
์คํธ ๋งค๋์ |
|||
|
|||
ํจ์๋ฅผ ํ์ธํด๋ณด๋ฉด, `@asynccontextmanager`๋ก ์ฅ์๋์ด ์์ต๋๋ค. |
|||
|
|||
์ด๊ฒ์ ํจ์๋ฅผ "**๋น๋๊ธฐ ์ปจํ
์คํธ ๋งค๋์ **"๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ฒ์ผ๋ก ๋ณํ์ํต๋๋ค. |
|||
|
|||
{* ../../docs_src/events/tutorial003.py hl[1,13] *} |
|||
|
|||
ํ์ด์ฌ์์ **์ปจํ
์คํธ ๋งค๋์ **๋ `with` ๋ฌธ์์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด, `open()`์ ์ปจํ
์คํธ ๋งค๋์ ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค: |
|||
|
|||
```Python |
|||
with open("file.txt") as file: |
|||
file.read() |
|||
``` |
|||
์ต๊ทผ ๋ฒ์ ์ ํ์ด์ฌ์์๋ **๋น๋๊ธฐ ์ปจํ
์คํธ ๋งค๋์ **๋ ์์ต๋๋ค. ์ด๋ฅผ `async with`์ ํจ๊ป ์ฌ์ฉํฉ๋๋ค: |
|||
|
|||
```Python |
|||
async with lifespan(app): |
|||
await do_stuff() |
|||
``` |
|||
|
|||
์ปจํ
์คํธ ๋งค๋์ ๋ ์์ ๊ฐ์ ๋น๋๊ธฐ ์ปจํ
์คํธ ๋งค๋์ ๋ฅผ ๋ง๋ค๋ฉด, `with` ๋ธ๋ก์ ๋ค์ด๊ฐ๊ธฐ ์ ์ `yield` ์ด์ ์ ์ฝ๋๊ฐ ์คํ๋๊ณ , `with` ๋ธ๋ก์ ๋ฒ์ด๋ ํ์๋ `yield` ์ดํ์ ์ฝ๋๊ฐ ์คํ๋ฉ๋๋ค. |
|||
|
|||
์์ ์ฝ๋ ์์ ์์๋ ์ง์ ์ฌ์ฉํ์ง ์๊ณ , FastAPI์ ์ ๋ฌํ์ฌ ์ฌ์ฉํ๋๋ก ํฉ๋๋ค. |
|||
|
|||
`FastAPI` ์ ํ๋ฆฌ์ผ์ด์
์ `lifespan` ๋งค๊ฐ๋ณ์๋ **๋น๋๊ธฐ ์ปจํ
์คํธ ๋งค๋์ **๋ฅผ ๋ฐ๊ธฐ ๋๋ฌธ์, ์๋ก์ด `lifespan` ๋น๋๊ธฐ ์ปจํ
์คํธ ๋งค๋์ ๋ฅผ FastAPI์ ์ ๋ฌํ ์ ์์ต๋๋ค. |
|||
|
|||
{* ../../docs_src/events/tutorial003.py hl[22] *} |
|||
|
|||
## ๋์ฒด ์ด๋ฒคํธ (์ฌ์ฉ ์ค๋จ) |
|||
|
|||
/// warning | ๊ฒฝ๊ณ |
|||
|
|||
์ด๋ฒคํธ ํธ๋ค๋ฌ๋ ์ฃผ ์์ฉ ํ๋ก๊ทธ๋จ์์๋ง ์๋ํฉ๋๋ค. [ํ์ ์์ฉ ํ๋ก๊ทธ๋จ - ๋ง์ดํธ](./sub-applications.md){.internal-link target=_blank}์์๋ ์๋ํ์ง ์์ต๋๋ค. |
|||
*์์*๊ณผ *์ข
๋ฃ*๋ฅผ ์ฒ๋ฆฌํ๋ ๊ถ์ฅ ๋ฐฉ๋ฒ์ ์์์ ์ค๋ช
ํ ๋๋ก `FastAPI` ์ ํ๋ฆฌ์ผ์ด์
์ `lifespan` ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. `lifespan` ๋งค๊ฐ๋ณ์๋ฅผ ์ ๊ณตํ๋ฉด `startup`๊ณผ `shutdown` ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ ๋ ์ด์ ํธ์ถ๋์ง ์์ต๋๋ค. `lifespan`์ ์ฌ์ฉํ ์ง, ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ ์ง ์ ํํด์ผ ํ๋ฉฐ ๋ ๋ค ์ฌ์ฉํ ์๋ ์์ต๋๋ค. |
|||
|
|||
์ด ๋ถ๋ถ์ ๊ฑด๋๋ฐ์
๋ ์ข์ต๋๋ค. |
|||
|
|||
/// |
|||
|
|||
## `startup` ์ด๋ฒคํธ |
|||
*์์*๊ณผ *์ข
๋ฃ* ๋์ ์คํ๋ ์ด ๋ก์ง์ ์ ์ํ๋ ๋์ฒด ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. |
|||
|
|||
์ ํ๋ฆฌ์ผ์ด์
์ด ์์๋๊ธฐ ์ ์ ๋๋ ์ข
๋ฃ๋ ๋ ์คํํด์ผ ํ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ(ํจ์)๋ฅผ ์ ์ํ ์ ์์ต๋๋ค. |
|||
|
|||
์์ฉ ํ๋ก๊ทธ๋จ์ ์์ํ๊ธฐ ์ ์ ์คํํ๋ ค๋ ํจ์๋ฅผ "startup" ์ด๋ฒคํธ๋ก ์ ์ธํฉ๋๋ค: |
|||
์ด ํจ์๋ค์ `async def` ๋๋ ์ผ๋ฐ `def`๋ก ์ ์ธํ ์ ์์ต๋๋ค. |
|||
|
|||
### `startup` ์ด๋ฒคํธ |
|||
|
|||
์ ํ๋ฆฌ์ผ์ด์
์ด ์์๋๊ธฐ ์ ์ ์คํ๋์ด์ผ ํ๋ ํจ์๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด, `"startup"` ์ด๋ฒคํธ๋ก ์ ์ธํฉ๋๋ค: |
|||
|
|||
{* ../../docs_src/events/tutorial001.py hl[8] *} |
|||
|
|||
์ด ๊ฒฝ์ฐ `startup` ์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์๋ ๋จ์ํ ๋ช ๊ฐ์ง ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ `dict` ํ์์ "๋ฐ์ดํฐ๋ฒ ์ด์ค"๋ฅผ ์ด๊ธฐํํฉ๋๋ค. |
|||
์ด ๊ฒฝ์ฐ, `startup` ์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์๋ "database"๋ผ๋ ํญ๋ชฉ(๋จ์ง `dict`)์ ์ผ๋ถ ๊ฐ์ผ๋ก ์ด๊ธฐํํฉ๋๋ค. |
|||
|
|||
ํ๋ ์ด์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์๋ฅผ ์ถ๊ฐํ ์๋ ์์ต๋๋ค. |
|||
์ฌ๋ฌ ๊ฐ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. |
|||
|
|||
๊ทธ๋ฆฌ๊ณ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ `startup` ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์๋ฃ๋ ๋๊น์ง ์์ฒญ์ ๋ฐ์ง ์์ต๋๋ค. |
|||
์ ํ๋ฆฌ์ผ์ด์
์ ๋ชจ๋ `startup` ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์๋ฃ๋ ๋๊น์ง ์์ฒญ์ ๋ฐ๊ธฐ ์์ํ์ง ์์ต๋๋ค. |
|||
|
|||
## `shutdown` ์ด๋ฒคํธ |
|||
### `shutdown` ์ด๋ฒคํธ |
|||
|
|||
์์ฉ ํ๋ก๊ทธ๋จ์ด ์ข
๋ฃ๋ ๋ ์คํํ๋ ค๋ ํจ์๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด `"shutdown"` ์ด๋ฒคํธ๋ก ์ ์ธํฉ๋๋ค: |
|||
์ ํ๋ฆฌ์ผ์ด์
์ด ์ข
๋ฃ๋ ๋ ์คํ๋์ด์ผ ํ๋ ํจ์๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด, `"shutdown"` ์ด๋ฒคํธ๋ก ์ ์ธํฉ๋๋ค: |
|||
|
|||
{* ../../docs_src/events/tutorial002.py hl[6] *} |
|||
|
|||
์ด ์์ ์์ `shutdown` ์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์๋ `"Application shutdown"`์ด๋ผ๋ ํ
์คํธ๊ฐ ์ ํ `log.txt` ํ์ผ์ ์ถ๊ฐํ ๊ฒ์
๋๋ค. |
|||
์ฌ๊ธฐ์, `shutdown` ์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์๋ `"Application shutdown"`์ด๋ผ๋ ํ
์คํธ๋ฅผ `log.txt` ํ์ผ์ ๊ธฐ๋กํฉ๋๋ค. |
|||
|
|||
/// info | ์ ๋ณด |
|||
|
|||
`open()` ํจ์์์ `mode="a"`๋ "์ถ๊ฐ"๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฏธ ์กด์ฌํ๋ ํ์ผ์ ๋ด์ฉ์ ๋ฎ์ด์ฐ์ง ์๊ณ ์๋ก์ด ์ค์ ์ถ๊ฐํฉ๋๋ค. |
|||
`open()` ํจ์์์ `mode="a"`๋ "์ถ๊ฐ"๋ฅผ ์๋ฏธํ๋ฏ๋ก, ํ์ผ์ ์๋ ๊ธฐ์กด ๋ด์ฉ์ ๋ฎ์ด์ฐ์ง ์๊ณ ์๋ก์ด ์ค์ด ์ถ๊ฐ๋ฉ๋๋ค. |
|||
|
|||
/// |
|||
|
|||
/// tip | ํ |
|||
|
|||
์ด ์์ ์์๋ ํ์ผ๊ณผ ์ํธ์์ฉ ํ๊ธฐ ์ํด ํ์ด์ฌ ํ์ค ํจ์์ธ `open()`์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. |
|||
์ด ๊ฒฝ์ฐ, ์ฐ๋ฆฌ๋ ํ์ค ํ์ด์ฌ `open()` ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ๊ณผ ์ํธ์์ฉํ๊ณ ์์ต๋๋ค. |
|||
|
|||
๋ฐ๋ผ์ ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ธฐ ์ํด "๋๊ธฐ"๊ฐ ํ์ํ I/O (์
๋ ฅ/์ถ๋ ฅ) ์์
์ ์ํํฉ๋๋ค. |
|||
๋ฐ๋ผ์ I/O(์
์ถ๋ ฅ) ์์
์ด ํฌํจ๋์ด ์์ด ๋์คํฌ์ ๊ธฐ๋ก๋๋ ๊ฒ์ "๊ธฐ๋ค๋ฆฌ๋" ๊ณผ์ ์ด ํ์ํฉ๋๋ค. |
|||
|
|||
๊ทธ๋ฌ๋ `open()`์ `async`์ `await`์ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์๋ `async def`๊ฐ ์๋ ํ์ค `def`๋ก ์ ์ธํ๊ณ ์์ต๋๋ค. |
|||
ํ์ง๋ง `open()`์ `async`์ `await`๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. |
|||
|
|||
๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์๋ฅผ `async def` ๋์ ์ผ๋ฐ `def`๋ก ์ ์ธํฉ๋๋ค. |
|||
|
|||
/// |
|||
|
|||
### `startup`๊ณผ `shutdown`์ ํจ๊ป ์ฌ์ฉ |
|||
|
|||
*์์*๊ณผ *์ข
๋ฃ* ๋ก์ง์ด ์ฐ๊ฒฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฌด์ธ๊ฐ๋ฅผ ์์ํ ํ ๋๋ด๊ฑฐ๋, ์์์ ํ๋ํ ํ ํด์ ํ๋ ๋ฑ์ ์์
์ ํ ์ ์์ต๋๋ค. |
|||
|
|||
์ด๋ฌํ ์์
์ ๋ณ๋์ ํจ์๋ก ์ฒ๋ฆฌํ๋ฉด ์๋ก ๋ก์ง์ด๋ ๋ณ์๋ฅผ ๊ณต์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ ์ด๋ ค์์ง๋๋ค. ๊ฐ๋ค์ ์ ์ญ ๋ณ์์ ์ ์ฅํ๊ฑฐ๋ ๋น์ทํ ํธ๋ฆญ์ ์ฌ์ฉํด์ผ ํ ์ ์์ต๋๋ค. |
|||
|
|||
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์์์ ์ค๋ช
ํ ๋๋ก `lifespan`์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค. |
|||
|
|||
## ๊ธฐ์ ์ ์ธ๋ถ์ฌํญ |
|||
|
|||
ํธ๊ธฐ์ฌ ๋ง์ ๋ถ๋ค์ ์ํ ๊ธฐ์ ์ ์ธ ์ธ๋ถ์ฌํญ์
๋๋ค. ๐ค |
|||
|
|||
ASGI ๊ธฐ์ ์ฌ์์ ๋ฐ๋ฅด๋ฉด, ์ด๋ <a href="https://asgi.readthedocs.io/en/latest/specs/lifespan.html" class="external-link" target="_blank">Lifespan Protocol</a>์ ์ผ๋ถ์ด๋ฉฐ, `startup`๊ณผ `shutdown`์ด๋ผ๋ ์ด๋ฒคํธ๋ฅผ ์ ์ํฉ๋๋ค. |
|||
|
|||
/// info | ์ ๋ณด |
|||
|
|||
์ด๋ฒคํธ ํธ๋ค๋ฌ์ ๊ดํ ๋ด์ฉ์ <a href="https://www.starlette.io/events/" class="external-link" target="_blank">Starlette ์ด๋ฒคํธ ๋ฌธ์</a>์์ ์ถ๊ฐ๋ก ํ์ธํ ์ ์์ต๋๋ค. |
|||
Starlette์ `lifespan` ํธ๋ค๋ฌ์ ๋ํด ๋ ์ฝ๊ณ ์ถ๋ค๋ฉด <a href="https://www.starlette.io/lifespan/" class="external-link" target="_blank">Starlette์ Lifespan ๋ฌธ์</a>์์ ํ์ธํ ์ ์์ต๋๋ค. |
|||
|
|||
์ด ๋ฌธ์์๋ ์ฝ๋์ ๋ค๋ฅธ ์์ญ์์ ์ฌ์ฉํ ์ ์๋ lifespan ์ํ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ๋ ํฌํจ๋์ด ์์ต๋๋ค. |
|||
|
|||
/// |
|||
|
|||
## ์๋ธ ์ ํ๋ฆฌ์ผ์ด์
|
|||
|
|||
๐จ ์ด lifespan ์ด๋ฒคํธ(`startup`๊ณผ `shutdown`)๋ ๋ฉ์ธ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ํด์๋ง ์คํ๋๋ฉฐ, [์๋ธ ์ ํ๋ฆฌ์ผ์ด์
- Mounts](sub-applications.md){.internal-link target=_blank}์๋ ์คํ๋์ง ์์์ ์ ์ํ์ธ์. |
|||
|
Loadingโฆ
Reference in new issue