๐ ๋๊ธฐ์ ๋น๋๊ธฐ์ ๋ํด์โฆ
๋๊ธฐ vs ๋น๋๊ธฐ
1๏ธโฃ Synchronous (๋๊ธฐ ์ฒ๋ฆฌ)
์์ฐจ์ ์ฒ๋ฆฌ ๋ฐฉ์
์์ฒญ์ ๋ณด๋ธ ํ, ์๋ต์ด ์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ ๋ค ๋ค์ ์์
์ ์ํํฉ๋๋ค.
โ ํน์ง
- Django ๊ธฐ๋ณธ ๋ฐฉ์
- ์ฒ๋ฆฌ ํ๋ฆ์ด ๋จ์ํ๊ณ ์ง๊ด์
- ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ๋ค๋ฅธ ์์ฒญ์ ๋๊ธฐ
- ๋ง์ ํธ๋ํฝ์์ ์ฑ๋ฅ ์ ํ ๋ฐ์ ๊ฐ๋ฅ
๐ ์์
import requests
from django.http import JsonResponse
def sync_view(request):
response = requests.get("https://api.example.com/data")
data = response.json()
return JsonResponse(data)
2๏ธโฃ Asynchronous (๋น๋๊ธฐ ์ฒ๋ฆฌ)
๋น์ฐจ๋จ ๋ฐฉ์, ์๋ต๊ณผ ๊ด๊ณ์์ด ๋ค์ ์์ ์ ๋ฐ๋ก ์คํํ ์ ์์ต๋๋ค.
โ ํน์ง
- I/O ์์ ์ค ๋ค๋ฅธ ์์ ์ ๋์์ ์ํ ๊ฐ๋ฅ
- ๋์ ๋์ ์ฒ๋ฆฌ๋, ๋น ๋ฅธ ์๋ต
- ๋ณต์กํ ํ๋ฆ ์ ์ด ํ์
๐ ์์
import httpx
from django.http import JsonResponse
async def async_view(request):
async with httpx.AsyncClient() as client:
response = await client.get("https://api.example.com/data")
data = response.json()
return JsonResponse(data)
๐ ์์ฝ ๋น๊ต
ํญ๋ชฉ | ๋๊ธฐ (Synchronous) | ๋น๋๊ธฐ (Asynchronous) |
---|---|---|
์ฒ๋ฆฌ ๋ฐฉ์ | ์์ฐจ์ ์ฒ๋ฆฌ | ๋ณ๋ ฌ ๋๋ ๋น์์ฐจ์ ์ฒ๋ฆฌ |
๋ค์ ์์ | ์ด์ ์์ ์๋ฃ ํ ์์ | ์ด์ ์์ ๊ณผ ์๊ด์์ด ์งํ ๊ฐ๋ฅ |
์ฝ๋ ๋ณต์ก์ฑ | ๋จ์ | ์๋์ ์ผ๋ก ๋ณต์ก |
์ฑ๋ฅ ๋ฐ ํจ์จ | ๋๋ฆด ์ ์์ | ๋น ๋ฅด๊ณ ์์ ํ์ฉ ํจ์จ์ |