์ตœ๋Œ€ 1 ๋ถ„ ์†Œ์š”

๋™๊ธฐ vs ๋น„๋™๊ธฐ

image

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)
์ฒ˜๋ฆฌ ๋ฐฉ์‹ ์ˆœ์ฐจ์  ์ฒ˜๋ฆฌ ๋ณ‘๋ ฌ ๋˜๋Š” ๋น„์ˆœ์ฐจ์  ์ฒ˜๋ฆฌ
๋‹ค์Œ ์ž‘์—… ์ด์ „ ์ž‘์—… ์™„๋ฃŒ ํ›„ ์‹œ์ž‘ ์ด์ „ ์ž‘์—…๊ณผ ์ƒ๊ด€์—†์ด ์ง„ํ–‰ ๊ฐ€๋Šฅ
์ฝ”๋“œ ๋ณต์žก์„ฑ ๋‹จ์ˆœ ์ƒ๋Œ€์ ์œผ๋กœ ๋ณต์žก
์„ฑ๋Šฅ ๋ฐ ํšจ์œจ ๋А๋ฆด ์ˆ˜ ์žˆ์Œ ๋น ๋ฅด๊ณ  ์ž์› ํ™œ์šฉ ํšจ์œจ์ 

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: