Каков правильный способ настройки приложения и каналов asgi в djnago?
Я только начал изучать каналы и asgi в django .... и в нескольких руководствах, которые я видел, они делают это для настройки asgi apllication
asgi.py
import os
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mywebsite.settings')
application = ProtocolTypeRouter({
'http':get_asgi_application(),
})
settings.py
INSTALLED_APPS = [
'channels',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'chat'
]
ASGI_APPLICATION = 'mywebsite.asgi.application'
для проверки, когда я запускаю свой сервер, он должен был работать на сервере asgi/channel вот так
Starting ASGI/Channels version development server at http://127.0.0.1:8000/
но мой все еще работает на стандартном
Starting development server at http://127.0.0.1:8000/
когда я использую daphne и помещаю внутрь установленные приложения вместо каналов
'daphne',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'chat'
]
все работает нормально
Starting ASGI/Daphne version 4.0.0 development server at http://127.0.0.1:8000/
Может кто-нибудь объяснить мне, что здесь происходит? И как именно django работает с asgi?
Официальная документация рекомендует добавить daphne в начало списка установленных приложений, чтобы обеспечить ему приоритет над другими установленными приложениями и использовать в качестве сервера для обработки запросов на основе Channels.
pip install -U channels["daphne"]
Daphne - это ASGI-сервер, который Django Channels использует для приема WebSocket-соединений. Таким образом, если вы хотите использовать Django Channels, вы должны добавить daphne в ваши установленные приложения. С другой стороны, Channels не требуются в установленных приложениях, потому что это не приложение само по себе, а фреймворк для создания приложений. Поэтому для использования Channels вы должны использовать другие приложения, построенные на его основе.