<aside>
</aside>
μλ νμΈμ! λλμ΄ 7λΆ: λΉλκΈ° μ²λ¦¬ λ° μ±λ₯ μ΅μ νμ 첫 μκ°, 32κ°μ λλ€! π
6λΆκΉμ§ μ°λ¦¬λ μ¬μ©μ μΈμ¦κ³Ό κΈ°λ³Έμ μΈ μΈκ° κΈ°λ₯κΉμ§ ꡬννλ©° μλΉν μμ±λ λμ ToDo APIλ₯Ό λ§λ€μμ΅λλ€. μ λ§ μκ³ λ§μΌμ ¨μ΄μ! π
μ΄μ 7λΆμμλ FastAPIκ° μλνλ ν΅μ¬ νΉμ§μ΄μ κ°λ ₯ν λ¬΄κΈ°μΈ λΉλκΈ°(Asynchronous) μ²λ¦¬μ λ΄λΆ λμ μ리λ₯Ό λ κΉμ΄ νκ³ λ€μ΄, μ΄λ₯Ό ν΅ν΄ μ΄λ»κ² λμ μ±λ₯μ λ¬μ±νλμ§ μ΄ν΄νκ³ , λμκ° μ ν리μΌμ΄μ μ μ±λ₯μ μ΅μ ννλ λ€μν κΈ°λ²λ€μ λ°°μ°κ² λ κ²μ λλ€.
1κ°μμ FastAPIκ° "Node.jsλ Goμ λ²κΈκ°λ λ§€μ° λμ μ±λ₯"μ μ 곡νλ€κ³ μΈκΈνλ κ² κΈ°μ΅λμλμ? μ΄λ² 32κ°μμλ λ°λ‘ κ·Έ μ±λ₯μ λΉλ°μ νν€μ³ λ΄
λλ€! FastAPIκ° μ΄λ»κ² νμ΄μ¬μ asyncio
μ ASGI νμ€μ κΈ°λ°μΌλ‘ λΉλκΈ° λ°©μμΌλ‘ λμνμ¬ μλ§μ μμ²μ ν¨μ¨μ μΌλ‘ λμμ μ²λ¦¬ν μ μλμ§, κ·Έ ν΅μ¬ μ리λ₯Ό μ½κ³ λͺ
ννκ² μ€λͺ
ν΄ λ릴κ²μ. async
μ await
μ λ§λ²μ ν¨κ» ννν΄ λ΄
μλ€! β‘
FastAPIμ λμ μ±λ₯κ³Ό λμμ± μ²λ¦¬ λ₯λ ₯μ κ·Όκ°μΈ λΉλκΈ°(Asynchronous) λμ λ°©μμ λν νμ΅. μ FastAPIκ° 'Fast'νμ§, κ·Έ ν΅μ¬ μ리λ₯Ό μ΄ν΄νλ μκ°.
μ°μ , **λκΈ°(Synchronous)**μ λΉλκΈ°(Asynchronous) νλ‘κ·Έλλ° λ°©μμ λͺ νν λΉκ΅ λ° μΉ μλ² νκ²½μμμ μλ―Έ νμ . μ΄μ΄μ, νλ‘κ·Έλ¨ μ€νμ λ©μΆλ λΈλ‘νΉ(Blocking) I/Oμ μ€ν νλ¦μ λ§μ§ μλ λ ΌλΈλ‘νΉ(Non-blocking) I/O κ°λ μ΄ν΄.
κ·Έλ¦¬κ³ νμ΄μ¬ λΉλκΈ° νλ‘κ·Έλλ°μ ν΅μ¬, **μ΄λ²€νΈ 루ν(Event Loop)**μ λμ λ°©μ λ° ν¨μ¨μ μμ
κ΄λ¦¬ λ°©λ² νμ΅. async def
ν€μλλ‘ μ μλ **μ½λ£¨ν΄(Coroutine)**κ³Ό await
ν€μλμ μ΄λ²€νΈ 루ν μνΈμμ© λ° λΉλκΈ° μμ
μ리 μ€λͺ
.
λ§μ§λ§μΌλ‘, 1κ°μμ μΈκΈλ **ASGI(Asynchronous Server Gateway Interface)**μ λΉλκΈ° μΉ νλ μμν¬ μ§μ λ° λμ λμμ±(Concurrency) ꡬν λ°©μ μ¬νμΈ. FastAPI μ½λμμ async def
μ await
μ μ¬λ°λ₯Έ μ¬μ© μ€μμ± κ°μ‘°.
μ΄ κ°μλ₯Ό λ§μΉλ©΄ μ¬λ¬λΆμ λ€μμ ν μ μκ² λ©λλ€:
asyncio
**μ΄λ²€νΈ 루ν(Event Loop)**μ κΈ°λ³Έ μν κ³Ό λμ λ°©μ μ€λͺ
.async def
λ‘ μ μλ μ½λ£¨ν΄κ³Ό await
ν€μλμ λΉλκΈ° νλ‘κ·Έλλ° μ¬μ©λ² μ΄ν΄.async
/await
μ¬μ© μ€μμ± μΈμ§.