장고 채팅 서비스 박치기 02 - asgi 세팅

김민규·2025년 2월 13일
0

geeks for geeks - 장고를 이용한 채팅 앱

이번에는 asgi 세팅을 해볼 것이다. ASGI가 무엇인지에 대해서는 아래 링크를 참고하였다.
CGI, WSGI, ASGI 정리
Python ASGI vs WSGI

ASGI (Asynchronous Server Gateway Interface)

ASGI는 비동기 및 동기 처리를 모두 지원하는 확장된 표준 인터페이스입니다. ASGI는 WSGI의 한계를 극복하기 위해 설계되었으며, 특히 비동기 작업이 필요한 환경에서 효율적입니다.

위 내용 정도로 요약되는 것 같다. 자세한 내용은 링크를 들어가서 확인하자.

bash

위에서 나온 ASGI를 사용하기 위해선 django-channels 라이브러리가 필요하다고 한다.
이를 위해 pip을 이용하여 설치할 수 있다.
또한 channels 4.0부터는 개발모드에서 asgi runserver가 작동하지 않아 daphne를 설치해야 한다고 한다.
daphne는 django-channels를 위해 개발된 http, http2, 웹소켓 서버라고 한다.

python -m pip install -U channels
python -m pip install -U daphne

config 수정

config의 settings.py에 설치한 라이브러리를 추가해주었다.

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    
    # 'daphne', # daphne 넣으니까 오히려 작동안함....??
    'channels' , 
]
ASGI_APPLICATION = 'config.asgi.application'

이상한게 있었지만 일단 넘어갔다.

그 다음으로는 config의 asgi.py의 스크립트를 수정해주었다.

import os

from channels.routing import ProtocolTypeRouter
from django.core.asgi import get_asgi_application

django_asgi_app = get_asgi_application()

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")

application = ProtocolTypeRouter({
    "http:": django_asgi_app,
    # just HTTP for now. (We can add other protocols later!)
})

ASGI_APPLICATION = get_asgi_application()

앱의 라우터를 channels의 라우터로 바꿔주었다.

+)알아볼 것

  • 장고 코어의 asgi와 channels의 차이점
  • daphne 쓰는 법

추가로 읽어볼 것

How to use Django with Daphne
django daphne 사용 정리

profile
공부 기록용

0개의 댓글

관련 채용 정보