[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

0๊ฐœ์˜ ๋Œ“๊ธ€

Powered by GraphCDN, the GraphQL CDN