<aside>
</aside>
์๋ ํ์ธ์! 7๋ถ '๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐ ์ฑ๋ฅ ์ต์ ํ'์ ์ธ ๋ฒ์งธ ์๊ฐ, 34๊ฐ์ ๋๋ค! ๐
์ง๋ 32๊ฐ๊ณผ 33๊ฐ์์๋ FastAPI์ ๋น๋๊ธฐ ๋์ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ , ๋น๋๊ธฐ ์ฝ๋ ๋ด์์ ๋ธ๋กํน ์์ ์ ์๋ชป ์ฌ์ฉํ์ ๋์ ๋ฌธ์ ์ ๊ณผ ํด๊ฒฐ์ฑ ์ ๋ฐฐ์ ์ต๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ์ด๋ฅผ ๋ค์ก์ต๋๋ค! ๐
์ด๋ฒ์๋ ์ฌ์ฉ์ ๊ฒฝํ๊ณผ ๊ด๋ จ๋ ๋ ๋ค๋ฅธ ์ฑ๋ฅ ์ต์ ํ ๊ธฐ๋ฒ์ ์์๋ด ๋๋ค. ๋ง์ฝ API ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์์, ์๋ต์ ์ฌ์ฉ์์๊ฒ ๋นจ๋ฆฌ ๋ณด๋ด์ฃผ๋ ๊ฒ์ด ์ค์ํ๊ณ , ์๊ฐ์ด ๋ค์ ๊ฑธ๋ฆฌ๋ ๋ถ๊ฐ์ ์ธ ์์ (์: ์ด๋ฉ์ผ ๋ฐ์ก, ๋ก๊ทธ ๊ธฐ๋ก, ์ฌ๋ ์๋ฆผ ๋ณด๋ด๊ธฐ ๋ฑ)์ ์๋ต ํ์ ์ฒ๋ฆฌํด๋ ๊ด์ฐฎ์ ๊ฒฝ์ฐ๊ฐ ์๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
์ฌ์ฉ์๊ฐ ์ด๋ฉ์ผ์ด ์ค์ ๋ก ๋ฐ์ก๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ฒ ํ ํ์๋ ์๊ฒ ์ฃ ? ๐ค ์ด๋ด ๋ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋ก FastAPI์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ (Background Tasks) ๊ธฐ๋ฅ์ ๋๋ค! ์ด๋ฒ ์๊ฐ์๋ ์๋ต ์๊ฐ์ ๋จ์ถํ๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๊ธฐ ์ํด, ํน์ ์์ ์ ์๋ต ๋ฐํ ํ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํํ๋๋ก ์์ฝํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๊ฒ ์ต๋๋ค. โฑ๏ธโก๏ธโ ํ์ฒ๋ฆฌ!
FastAPI BackgroundTasks
๊ธฐ๋ฅ ํ์ต: HTTP ์๋ต ๋ฐํ ์ดํ ํน์ ํจ์(์์
) ์คํ ๋ฐฉ๋ฒ. ๋น ๋ฅธ ์๋ต์ด ์ค์ํ๊ณ ์ผ๋ถ ์์
์ด ์๋ต์ ๋ธ๋กํนํ ํ์ ์์ ๋ ์ ์ฉ.
์์: ํ์๊ฐ์ ์์ฒญ ์ฒ๋ฆฌ ์, DB ์ ์ฅ ํ ์ฆ์ ์ฑ๊ณต ์๋ต ์ ์ก. ํ์ ์ด๋ฉ์ผ ๋ฐ์ก์ ์๋ต ํ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ. ์ฌ์ฉ์๋ ์ด๋ฉ์ผ ๋ฐ์ก ์๋ฃ ๋๊ธฐ ์์ด ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ ์์ ์ผ๋ก ์ฌ์ฉ์ ๊ฒฝํ ํฅ์.
fastapi.BackgroundTasks
ํด๋์ค๋ฅผ ์์กด์ฑ ์ฃผ์
์ผ๋ก ์ ๋ฌ๋ฐ์ background_tasks.add_task()
๋ฉ์๋๋ก ๋ฐฑ๊ทธ๋ผ์ด๋ ํจ์์ ์ธ์ ๋ฑ๋ก ์ค์ต. ๋๊ธฐ(def
)/๋น๋๊ธฐ(async def
) ํจ์ ๋ชจ๋ ๋ฑ๋ก ๊ฐ๋ฅ. BackgroundTasks
์ ์ผ๋ฐ์ ์ฌ์ฉ ์ฌ๋ก, ํ๊ณ์ ๋ฐ ๋์(Celery ๋ฑ ์ ๋ฌธ ์์
ํ) ๊ฐ๋ตํ ํ์ต.
์ด ๊ฐ์๋ฅผ ๋ง์น๋ฉด ์ฌ๋ฌ๋ถ์ ๋ค์์ ํ ์ ์๊ฒ ๋ฉ๋๋ค:
BackgroundTasks
๋ฅผ ์ฌ์ฉํ ์๋ต ๋ฐํ ํ ์คํ ์์
์ ์.BackgroundTasks
ํ์
์ ์ธ์ผ๋ก ์์กด์ฑ ์ฃผ์
๋ฐ๊ธฐ.background_tasks.add_task()
๋ฉ์๋๋ก ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ํจ์์ ์ธ์ ๋ฑ๋ก.