Какова основная цель использования Daphne с каналами Django, если мы уже можем выполнить настройку ASGI самостоятельно? Какова связь между ASGI и сервером Daphne?





Вам нужен сервер, который говорит и понимает ASGI, а также способен говорить и понимать такие протоколы, как HTTP (формат HTTP охватывает HTTP/1.0, HTTP/1.1 и HTTP/2.0) и Websocket.
Ваш сервер будет работать поверх этого сервера, и ваш сервер будет взаимодействовать с этим сервером. [1]
Обоснование ASGI
Спецификация ASGI предлагает стандартный интерфейс между серверами сетевых протоколов (особенно веб-серверами) и приложениями Python, предназначенный для обработки нескольких общих стилей протоколов.
Daphne — это сервер протоколов HTTP, HTTP2 и WebSocket для ASGI и ASGI-HTTP, разработанный для поддержки каналов Django.
Таким образом, ни Django, ни каналы Django (и, соответственно, ваш сервер) сами по себе не являются серверами ASGI, а на самом деле являются приложениями ASGI. Приложения ASGI должны иметь точку входа, из которой сервер ASGI может их вызывать. Спецификация определяет его следующим образом:
coroutine application(scope, receive, send)Не то чтобы это не было точно, но идея передана хорошо. Django предоставляет такую точку входа. См. Как развернуть с помощью ASGI. [джанго-документы]
[1] Your server (actually Django, Django Channels and any other frameworks that will themselves actually communicate with Daphne) is defined as the application in the ASGI specification whereas Daphne is defined as the server.