Каков правильный способ настройки приложения и каналов 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 вы должны использовать другие приложения, построенные на его основе.

Вернуться на верх