Browse Source

๐ŸŒ Add Korean translation for `docs/ko/docs/tutorial/background-tasks.md` (#5910)

pull/11038/head
Jun-Ah ์ค€์•„ 1 year ago
committed by GitHub
parent
commit
3817514992
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 102
      docs/ko/docs/tutorial/background-tasks.md

102
docs/ko/docs/tutorial/background-tasks.md

@ -0,0 +1,102 @@
# ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…
FastAPI์—์„œ๋Š” ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ ํ›„์— ์‹คํ–‰ํ•  ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‘๋‹ต์„ ๋ฐ›๊ธฐ ์œ„ํ•ด ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฒญ ํ›„์— ๋ฐœ์ƒํ•ด์•ผํ•˜๋Š” ์ž‘์—…์— ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ์ž‘์—…์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
* ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ํ›„ ์ „์†ก๋˜๋Š” ์ด๋ฉ”์ผ ์•Œ๋ฆผ
* ์ด๋ฉ”์ผ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๊ณ  ์ด๋ฉ”์ผ์„ ์ „์†กํ•˜๋Š” ๊ฒƒ์€ (๋ช‡ ์ดˆ ์ •๋„) "๋Š๋ฆฐ" ๊ฒฝํ–ฅ์ด ์žˆ์œผ๋ฏ€๋กœ, ์‘๋‹ต์€ ์ฆ‰์‹œ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ด๋ฉ”์ผ ์•Œ๋ฆผ์€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ „์†กํ•˜๋Š” ๊ฒŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
* ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ:
* ์˜ˆ๋ฅผ ๋“ค์–ด ์ฒ˜๋ฆฌ์— ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•˜์„ ๋•Œ "Accepted" (HTTP 202)์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
## `๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…` ์‚ฌ์šฉ
๋จผ์ € ์•„๋ž˜์™€ ๊ฐ™์ด `BackgroundTasks`๋ฅผ ์ž„ํฌํŠธํ•˜๊ณ , `BackgroundTasks`๋ฅผ _๊ฒฝ๋กœ ๋™์ž‘ ํ•จ์ˆ˜_ ์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
```Python hl_lines="1 13"
{!../../../docs_src/background_tasks/tutorial001.py!}
```
**FastAPI** ๋Š” `BackgroundTasks` ๊ฐœ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
## ์ž‘์—… ํ•จ์ˆ˜ ์ƒ์„ฑ
๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์œผ๋กœ ์‹คํ–‰ํ•  ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๋‹จ์ˆœํžˆ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ํ•จ์ˆ˜์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.
**FastAPI**๋Š” ์ด๊ฒƒ์ด `async def` ํ•จ์ˆ˜์ด๋“ , ์ผ๋ฐ˜ `def` ํ•จ์ˆ˜์ด๋“  ๋‚ด๋ถ€์ ์œผ๋กœ ์ด๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
์ด ๊ฒฝ์šฐ, ์•„๋ž˜ ์ž‘์—…์€ ํŒŒ์ผ์— ์“ฐ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. (์ด๋ฉ”์ผ ๋ณด๋‚ด๊ธฐ ์‹œ๋ฌผ๋ ˆ์ด์…˜)
๊ทธ๋ฆฌ๊ณ  ์ด ์ž‘์—…์€ `async`์™€ `await`๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ผ๋ฐ˜ `def` ํ•จ์ˆ˜๋กœ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.
```Python hl_lines="6-9"
{!../../../docs_src/background_tasks/tutorial001.py!}
```
## ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—… ์ถ”๊ฐ€
_๊ฒฝ๋กœ ๋™์ž‘ ํ•จ์ˆ˜_ ๋‚ด์—์„œ ์ž‘์—… ํ•จ์ˆ˜๋ฅผ `.add_task()` ํ•จ์ˆ˜ ํ†ตํ•ด _๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…_ ๊ฐœ์ฒด์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
```Python hl_lines="14"
{!../../../docs_src/background_tasks/tutorial001.py!}
```
`.add_task()` ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ธ์ž๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค :
- ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ์ž‘์—… ํ•จ์ˆ˜ (`write_notification`).
- ์ž‘์—… ํ•จ์ˆ˜์— ์ˆœ์„œ๋Œ€๋กœ ์ „๋‹ฌ๋˜์–ด์•ผ ํ•˜๋Š” ์ผ๋ จ์˜ ์ธ์ž (`email`).
- ์ž‘์—… ํ•จ์ˆ˜์— ์ „๋‹ฌ๋˜์–ด์•ผํ•˜๋Š” ๋ชจ๋“  ํ‚ค์›Œ๋“œ ์ธ์ž (`message="some notification"`).
## ์˜์กด์„ฑ ์ฃผ์ž…
`BackgroundTasks`๋ฅผ ์˜์กด์„ฑ ์ฃผ์ž… ์‹œ์Šคํ…œ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด _๊ฒฝ๋กœ ๋™์ž‘ ํ•จ์ˆ˜_, ์ข…์†์„ฑ, ํ•˜์œ„ ์ข…์†์„ฑ ๋“ฑ ์—ฌ๋Ÿฌ ์ˆ˜์ค€์—์„œ BackgroundTasks ์œ ํ˜•์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
**FastAPI**๋Š” ๊ฐ ๊ฒฝ์šฐ์— ์ˆ˜ํ–‰ํ•  ์ž‘์—…๊ณผ ๋™์ผํ•œ ๊ฐœ์ฒด๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ์—, ๋ชจ๋“  ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์ด ํ•จ๊ป˜ ๋ณ‘ํ•ฉ๋˜๊ณ  ๋‚˜์ค‘์— ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
=== "Python 3.6 and above"
```Python hl_lines="13 15 22 25"
{!> ../../../docs_src/background_tasks/tutorial002.py!}
```
=== "Python 3.10 and above"
```Python hl_lines="11 13 20 23"
{!> ../../../docs_src/background_tasks/tutorial002_py310.py!}
```
์ด ์˜ˆ์ œ์—์„œ๋Š” ์‘๋‹ต์ด ๋ฐ˜ํ™˜๋œ ํ›„์— `log.txt` ํŒŒ์ผ์— ๋ฉ”์‹œ์ง€๊ฐ€ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.
์š”์ฒญ์— ์ฟผ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์˜ ๋กœ๊ทธ์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  _๊ฒฝ๋กœ ๋™์ž‘ ํ•จ์ˆ˜_ ์—์„œ ์ƒ์„ฑ๋œ ๋˜ ๋‹ค๋ฅธ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์€ ๊ฒฝ๋กœ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
## ๊ธฐ์ˆ ์  ์„ธ๋ถ€์‚ฌํ•ญ
`BackgroundTasks` ํด๋ž˜์Šค๋Š” <a href="https://www.starlette.io/background/" class="external-link" target="_blank">`starlette.background`</a>์—์„œ ์ง์ ‘ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
`BackgroundTasks` ํด๋ž˜์Šค๋Š” FastAPI์—์„œ ์ง์ ‘ ์ž„ํฌํŠธํ•˜๊ฑฐ๋‚˜ ํฌํ•จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ˆ˜๋กœ `BackgroundTask` (๋์— `s`๊ฐ€ ์—†์Œ)์„ ์ž„ํฌํŠธํ•˜๋”๋ผ๋„ starlette.background์—์„œ `BackgroundTask`๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
(`BackgroundTask`๊ฐ€ ์•„๋‹Œ) `BackgroundTasks`๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, _๊ฒฝ๋กœ ๋™์ž‘ ํ•จ์ˆ˜_ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ณ  ๋‚˜๋จธ์ง€๋Š” **FastAPI**๊ฐ€ ๋Œ€์‹  ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ `Request` ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
FastAPI์—์„œ `BackgroundTask`๋ฅผ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ์ฒด๋ฅผ ์ฝ”๋“œ์—์„œ ์ƒ์„ฑํ•˜๊ณ , ์ด ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•˜๋Š” Starlette `Response`๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
<a href="https://www.starlette.io/background/" class="external-link" target="_blank">`Starlette์˜ ๊ณต์‹ ๋ฌธ์„œ`</a>์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
## ๊ฒฝ๊ณ 
๋งŒ์•ฝ ๋ฌด๊ฑฐ์šด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๊ณ  ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ (์˜ˆ: ๋ฉ”๋ชจ๋ฆฌ, ๋ณ€์ˆ˜ ๋“ฑ์„ ๊ณต์œ ํ•  ํ•„์š”๊ฐ€ ์—†์Œ) <a href="https://docs.celeryq.dev" class="external-link" target="_blank">`Celery`</a>์™€ ๊ฐ™์€ ํฐ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
RabbitMQ ๋˜๋Š” Redis์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€/์ž‘์—… ํ ์‹œ์Šคํ…œ ๋ณด๋‹ค ๋ณต์žกํ•œ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•œ ๊ฒฝํ–ฅ์ด ์žˆ์ง€๋งŒ, ์—ฌ๋Ÿฌ ์ž‘์—… ํ”„๋กœ์„ธ์Šค๋ฅผ ํŠนํžˆ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ์ œ๋ฅผ ๋ณด์‹œ๋ ค๋ฉด [ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ๊ธฐ](../project-generation.md){.internal-link target=\_blank} ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. ํ•ด๋‹น ์˜ˆ์ œ์—๋Š” ์ด๋ฏธ ๊ตฌ์„ฑ๋œ `Celery`๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋™์ผํ•œ FastAPI ์•ฑ์—์„œ ๋ณ€์ˆ˜ ๋ฐ ๊ฐœ์ฒด์— ์ ‘๊ทผํ•ด์•ผํ–๋Š” ์ž‘์€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ˆ˜ํ–‰์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ (์˜ˆ : ์•Œ๋ฆผ ์ด๋ฉ”์ผ ๋ณด๋‚ด๊ธฐ) ๊ฐ„๋‹จํ•˜๊ฒŒ `BackgroundTasks`๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š”.
## ์š”์•ฝ
๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด _๊ฒฝ๋กœ ๋™์ž‘ ํ•จ์ˆ˜_ ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ `BackgroundTasks`๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
Loadingโ€ฆ
Cancel
Save