[TIL_Carrotww] 62 - 22/11/30

μœ ν˜•μ„Β·2022λ…„ 11μ›” 30일
0

TIL

λͺ©λ‘ 보기
73/138
post-thumbnail

πŸ“Carrotww의 μ½”λ”© 기둝μž₯

🧲 DRF WSGI, ASGI

πŸ” django μ‹€μ‹œκ°„ μ±„νŒ… ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€κΈ° μœ„ν•΄μ„œ 곡뢀해 λ³΄μ•˜λ‹€.

  • django λž€
    DjangoλŠ” MTV νŒ¨ν„΄μ„ μ œκ³΅ν•˜μ—¬ API 뿐 μ•„λ‹ˆλΌ ν…œν”Œλ¦Ώμ„ μ΄μš©ν•˜μš” html νŒŒμΌμ„ 생성해 λ·°λ₯Ό λ§Œλ“€ 수 μžˆλ„λ‘ μ œκ³΅ν•˜μ—¬ λΉ λ₯Έ 생산성을 μžλž‘ν•œλ‹€.

spring κ³„μ—΄μ—μ„œλŠ” μ›Ή μ„œλΉ„μŠ€λ₯Ό Tomcat λ“±μ˜ WAS 둜 배포λ₯Ό ν•˜λŠ”λ° python μ—λŠ” μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€ μ•„λž˜λŠ” λ‹€λ₯Έ 배포 방법이닀.

  • CGI & FastCGI
    CGIλŠ” 정적 데이터 처리만 κ°€λŠ₯ν•œ web μ„œλ²„λ₯Ό λ™μ μœΌλ‘œ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©μž μš”μ²­μ— 따라 μ‹€ν–‰ κ°€λŠ₯ν•œ μ™ΈλΆ€ ν”„λ‘œκ·Έλž¨μ„ ν˜ΈμΆœν•˜κ³  처리 κ²°κ³Όλ₯Ό λŒλ €μ€„ 수 μžˆλŠ” μΈν„°νŽ˜μ΄μŠ€μ΄λ‹€.
    CGIλŠ” request μš”μ²­μ΄ 였면 ν”„λ‘œκ·Έλž¨μ„ μ‹œμž‘ν•˜κ³  responseκ°€ μ™„λ£Œλ˜λ©΄ ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•˜μ—¬ μ„±λŠ₯이 크게 μ €ν•˜λ˜μ§€λ§Œ
    FastCGIλŠ” Web μ„œλ²„ λ‚΄ λ™μž‘ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ΄ ν˜ΈμΆœλ˜μ—ˆλ‹€λ©΄ ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€λ₯Ό μΌμ •μ‹œκ°„ λ³΄κ΄€ν•˜μ—¬ μš”μ²­ μ‹œ 처리 μ‹œκ°„μ„ 쀄여 응닡 μ„±λŠ₯을 ν–₯μƒμ‹œν‚¬ 수 μžˆλ‹€.
  • WSGI λž€
    WSGIλŠ” CGI와 λ™μΌν•˜κ²Œ μ›Ή μ„œλ²„μ™€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 쀑간에 μœ„μΉ˜ν•˜λŠ”λ° CGIλŠ” μš”μ²­λ§ˆλ‹€ ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±ν•˜κ³ , WSGIλŠ” ν•œ ν”„λ‘œμ„ΈμŠ€μ—μ„œ λͺ¨λ“  μš”μ²­μ„ λ°›λŠ”λ‹€. CGIλŠ” μš”μ²­λ§ˆλ‹€ Fork ν•¨μˆ˜λ₯Ό 톡해 μ»€λ„μ—μ„œ λ¦¬μ†ŒμŠ€λ₯Ό μΆ”κ°€ν•˜κ³  λ°˜λ‚©ν•˜μ§€λ§Œ WSGIλŠ” λ§Žμ€ μš”μ²­μ„ 콜백 ν•¨μˆ˜λ₯Ό ν†΅ν•˜μ—¬ ν•œλ²ˆμ— μ²˜λ¦¬ν•˜κ²Œ λœλ‹€.
    ex) gunicorn
  • ASGI λž€
    λ‚΄κ°€ ν•˜λ €λŠ” djangoμ—μ„œ μ±„νŒ… κΈ°λŠ₯은 비동기 처리λ₯Ό μ§€μ›ν•˜λŠ”λ° WSGIλŠ” 비동기 처리λ₯Ό μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€. κ·Έλž˜μ„œ WSGIλŠ” μ—¬λŸ¬ μž‘μ—…μ„ λ™μ‹œμ— μ²˜λ¦¬ν•˜λŠ” 것에 ν•œκ³„κ°€ μžˆλ‹€.
    ASGIλŠ” Cython 기반으둜 λ§Œλ“€μ–΄μ Έ λΉ λ₯Έ 속도λ₯Ό μ œκ³΅ν•˜λ©° μ „λ°˜μ μœΌλ‘œ WSGI와 λΉ„μŠ·ν•˜λ‚˜ 비동기 처리λ₯Ό μ§€μ›ν•œλ‹€λŠ” μž₯점이 μžˆλ‹€.
    ex) Uvicorn

🧲 Django Channels λœ―μ–΄λ³΄κΈ°

πŸ” Channels λ§Œλ“€κΈ° μœ„ν•΄μ„œ

  • ASGI
  • Asynchronous webserver
  • Consumer
  • Daphne : HTTP request, websocket requestλ₯Ό λ”°λ‘œ μš”μ²­μ„ λ°›μ•„ urls.py, mysite.routing νŒŒμΌμ— μžλ™μœΌλ‘œ λ§€ν•‘ν•΄μ£ΌλŠ” μ›Ήμ„œλ²„.
    daphne ν•˜λ‚˜μ˜ μ›Ή μ„œλ²„λ‘œ 두 가지 λͺ¨λ‘ κ°€λŠ₯ν•œκ²ƒμ΄ μž₯점
  • Channel Layer
  • javascript - aiohttp
  • DB - database_sync_to_async : channels.dbμ—μ„œ μ§€μ›ν•΄μ£ΌλŠ” db IO 비동기 처리

pycon Django channels 자료
https://www.youtube.com/watch?v=ehpr3YHSQlQ

profile
Carrot_hyeong

0개의 λŒ“κΈ€