<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 ๋“ฑ ์ „๋ฌธ ์ž‘์—… ํ) ๊ฐ„๋žตํžˆ ํ•™์Šต.


๐ŸŽฏ ์ฑ•ํ„ฐ ๋ชฉํ‘œ

์ด ๊ฐ•์˜๋ฅผ ๋งˆ์น˜๋ฉด ์—ฌ๋Ÿฌ๋ถ„์€ ๋‹ค์Œ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค:

  1. ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—… ํ•„์š” ์‹œ๋‚˜๋ฆฌ์˜ค(์‘๋‹ต ์‹œ๊ฐ„ ๋‹จ์ถ•) ์ดํ•ด.
  2. FastAPI BackgroundTasks๋ฅผ ์‚ฌ์šฉํ•œ ์‘๋‹ต ๋ฐ˜ํ™˜ ํ›„ ์‹คํ–‰ ์ž‘์—… ์ •์˜.
  3. ๊ฒฝ๋กœ ์ž‘๋™ ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ์— BackgroundTasks ํƒ€์ž… ์„ ์–ธ์œผ๋กœ ์˜์กด์„ฑ ์ฃผ์ž… ๋ฐ›๊ธฐ.
  4. background_tasks.add_task() ๋ฉ”์„œ๋“œ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰ ํ•จ์ˆ˜์™€ ์ธ์ž ๋“ฑ๋ก.
  5. ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์˜ ์ผ๋ฐ˜์  ์‚ฌ์šฉ ์‚ฌ๋ก€(์ด๋ฉ”์ผ, ๋กœ๊น… ๋“ฑ) ๋ฐ ํ•œ๊ณ„์ (์‹ ๋ขฐ์„ฑ, ์žฅ์‹œ๊ฐ„ ์ž‘์—…) ์ดํ•ด.

๐Ÿ—๏ธ ์ด๋ฒˆ ๊ฐ•์˜์—์„œ ์‚ฌ์šฉํ•  ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๋ฐ ์˜ˆ์ œ ์ฝ”๋“œ