[Channels] 공식문서 번역 📘 - 3: 설치하기

Eunsung Lim·2021년 1월 14일
0
post-thumbnail

Channels는 Django를 확장해 웹소켓과 같이 HTTP가 아닌 프로토콜을 핸들링할 수 있게 돕고 비동기적인 처리를 가능하게 해주는 ASGI의 구현체로, 장고를 이용한 실시간 채팅 구현 등에 활용할 수 있습니다. 이 글은 채널즈의 공식 문서를 최대한 원어를 살려 번역한 글입니다. 다소 의역하거나 생략한 부분이 있을 수 있음을 너그러이 양해해주시고, 잘못을 자유롭게 지적해주시면 감사하겠습니다.

설치하기

채널즈는 PyPI에 등록돼있어서 다음 코드만 실행해 설치할 수 있습니다.

python -m pip install -U channels

그 후엔 channels를 장고 setting.pyINSTALLED_APPS에 추가해야 합니다.

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    ...
    'channels',
)

그 다음 장고 프로젝트의 asgi.py 파일(e.g. `mypro을 Django ASGI 애플리케이션을 감싸도록 설정합니다.

import os

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

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')

application = ProtocolTypeRouter({
    "http": get_asgi_application(),
    # 지금은 HTTP만 등록합니다. (나중에 다른 프로토콜들도 등록할 거예요!)
})

주의사항

장고 v2.2는 자체 ASGI 지원이 없어 채널즈의 대체 시스템을 이용해야 합니다. myproject/asgi.py 파일을 이렇게 설정하세요:

import os

import django
from channels.http import AsgiHandler
from channels.routing import ProtocolTypeRouter

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
django.setup()

application = ProtocolTypeRouter({
   "http": AsgiHandler(),
   # 지금은 HTTP만 등록합니다. (나중에 다른 프로토콜들도 등록할 거예요!)
})

마지막으로, ASGI_APPLICATION가 루트 애플리케이션의 라우팅 오브젝트를 가리키도록 설정하세요:

ASGI_APPLICATION = "myproject.asgi.application"

설정이 모두 끝났습니다! 한 번 활성화되면, channels는 장고와 통합되어 runserver 커맨드를 제어하게 됩니다. 자세한 사항은 소개를 참조해주세요.

주의사항

다른 서드파티 앱이 runserver 커맨드를 오버로드하거나 대체할 경우에 주의하세요. 채널즈는 별도의 runserver 커맨드를 제공하기 때문에 해당 앱과 충돌할 수 있습니다. 그러한 대표적인 사례로 whitenoise 앱의 runserver_nostatic이 있습니다. 이를 해결하기 위해선 채널즈를 INSTALLED_APPS 설정값의 최상단으로 이동하거나, 충돌하는 다른 앱을 제거해주세요.

최신 개발 버전 설치하기

채널즈의 최신 버전을 설치하려면, 레포를 클론한 뒤 해당 디렉토리에서 들어가, 현재 가상환경에서 pip install을 실행합니다.

$ git clone git@github.com:django/channels.git
$ cd channels
$ <activate your project’s virtual environment>
(environment) $ pip install -e .  # 온점은 현재 레포를 가리킵니다.

튜토리얼로 이어집니다.

profile
Strong belief in connecting the dots. 찬찬히 배우고 있는 학생 개발자입니다.

0개의 댓글