티스토리 뷰
[ Django Channels ]
Django Channels 는 Django 로 HTTP 를 넘어 WebSockets, chat protocols, IoT protocols 등을 핸들링하고 싶을 때
사용합니다. ASGI 기반이라고 하고 다음과 같은 패키지들로 구성되어있습니다.
Channels is comprised of several packages:
- Channels, the Django integration layer
- Daphne, the HTTP and Websocket termination server
- asgiref, the base ASGI library
- channels_redis, the Redis channel layer backend (optional)
[ 설치 ]
Daphne ASGI application server 랑 같이 channels 를 설치하려면
python -m pip install -U 'channels[daphne]'
daphne 없이 오직 channels 만 설치하고 싶으면
pip install channels
참고로 이렇게 두번에 나눠서 설치해도 무방합니다.
pip install channels
pip install daphne
(참고: Installation)
[ Tutorial ]
간단한 Chat Server 를 만들어보는 튜토리얼을 제공합니다.
튜토리얼은 Channels 4.0 (which supports Python 3.7+ and Django 3.2+) 기반으로 작성되어있습니다.
또한 Redis 를 설치/실행 하기 위해 Docker 를 사용할 것 입니다. (참고: Install Docker )
[ Tutorial Part 1: Basic Setup ]
# Project 만들기 / App 만들기 / index view 추가하기
이쪽 내용은 Django 기본 내용이라 스킵!
# Integrate the Channels library
우선 Channels 를 위한 routing configuration 을 만듭니다.
routing configuration 은 ASGI application 입니다.
이는 Channels 서버가 HTTP 요청을 수신할 때 어떤 코드를 실행할 지 알려준다는 점에서
Django 의 URLconf 와 유사합니다.
프로젝트를 만들면 mysite/asgi.py 는 이렇게 기본 구성되어있는데요,
# mysite/asgi.py
import os
from django.core.asgi import get_asgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
application = get_asgi_application()
다음과 같이 바꿔줍니다.
...
from channels.routing import ProtocolTypeRouter
...
application = ProtocolTypeRouter(
{
"http": get_asgi_application(),
# Just HTTP for now. (We can add other protocols later.)
}
)
그리고 ASGI version 의 runserver command 를 가능하게 하기 위한 작업을 해줍니다.
mysite/settings.py 로 가서 installed apps 에 'daphne' 을 추가해주고
# mysite/settings.py
INSTALLED_APPS = [
'daphne',
...
]
마지막 줄에 해당 코드를 작성해줍니다. root 의 routing 구성도 Daphne을 가리켜야하기 때문입니다.
# mysite/settings.py
# Daphne
ASGI_APPLICATION = "mysite.asgi.application"
이제 Daphne이 installed apps 에 있으니 runserver command 를 실행하면
표준 Django development server 가 ASGI 호환 버전으로 대체됩니다.
(참고로 Daphne development server 가 runserver command 를 대체하는 다른 third-party app 과 충돌할 수 있으니
daphne을 INSTALLED_APPS 의 맨위에 작성하는 것을 권장합니다.)
이제 runserver command 를 실행해보면
python manage.py runserver
콘솔에 이렇게 뜨는 것을 볼 수 있습니다.
Starting ASGI/Daphne version 3.0.2 development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
'🐍 > Django' 카테고리의 다른 글
[Django] 장고 Admin 사이트에 검색 기능 추가하기 (0) | 2021.08.19 |
---|---|
[Heroku] Migrate Django SQLite to PostgreSQL (0) | 2021.08.01 |
[Django] SQL 스크립트 돌리기 -> ORM 으로 (0) | 2021.08.01 |
[Heroku] PostgreSQL DB Plan 업그레이드 (0) | 2021.05.12 |
[Django] 쿼리문 (retrieve) (0) | 2021.03.21 |
- Total
- Today
- Yesterday
- 장고 URL querystring
- drf custom error
- flutter deep link
- METAL
- 플러터 싱글톤
- 장고 Custom Management Command
- 플러터 얼럿
- ipad multitasking
- Flutter getter setter
- cocoapod
- Dart Factory
- flutter build mode
- Flutter 로딩
- Flutter Clipboard
- Watch App for iOS App vs Watch App
- Sketch 누끼
- Django Heroku Scheduler
- Flutter Text Gradient
- Python Type Hint
- Flutter Spacer
- flutter dynamic link
- flutter 앱 출시
- github actions
- Django Firebase Cloud Messaging
- DRF APIException
- ribs
- Django FCM
- SerializerMethodField
- PencilKit
- 구글 Geocoding API
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |