본문 바로가기

내일배움 캠프/TIL

django-channels

Channels는 장고를 사용하여 HTTP를 넘어 웹소켓, 채팅 프로토콜, IoT 프로토콜 등을 처리할 수 있는 기능을 확장하는 프로젝트입니다. ASGI라는 파이썬 사양을 기반으로 합니다.

채널은 장고의 네이티브 ASGI 지원을 기반으로 구축됩니다. Django는 여전히 기존의 HTTP를 처리하지만 Channels는 동기식 또는 비동기식으로 다른 연결을 처리할 수 있는 선택권을 제공합니다.

 

channels은 여러 패키지로 구성됩니다
Channels, 장고 통합 계층
HTTP 및 웹 소켓 종료 서버인 Daphne
기본 ASGI 라이브러리인 asgiref
channels_redis, Redis 채널 계층 백엔드(옵션)

 

Django Channels의 주요 특징과 개념은 다음과 같습니다:

  1. 웹 소켓 지원: 웹 소켓은 실시간 양방향 통신을 가능하게 하는 프로토콜로, 실시간 채팅, 실시간 알림, 게임 등에 유용합니다. Django Channels는 웹 소켓 연결을 관리하고, 웹 소켓 프로토콜을 지원하여 실시간 기능을 쉽게 구현할 수 있습니다.
  2. Consumer: Django Channels에서 비동기 작업을 처리하는 기본 단위는 Consumer입니다. Consumer는 채널 라우팅을 통해 웹 소켓 연결 또는 다른 비동기 프로토콜에 대한 요청을 처리합니다.
  3. ASGI (Asynchronous Server Gateway Interface): Django Channels는 ASGI를 사용하여 비동기 통신을 처리합니다. ASGI는 웹 서버와 애플리케이션 사이의 표준 인터페이스를 제공하여 비동기 처리를 지원합니다.
  4. Channel Layers: Channel Layers는 여러 서버 간에 메시지를 전송하는 방법을 제공합니다. Redis, RabbitMQ, database 등 다양한 백엔드를 사용하여 메시지 전송을 구성할 수 있습니다.
  5. Background Tasks: Django Channels는 웹 요청과 별개로 비동기적으로 실행되어야 하는 백그라운드 작업을 지원합니다.
  6. HTTP2 지원: Django Channels는 HTTP2 요청을 처리하여 성능을 향상시킵니다.