ASGI_APPLICATION не работает с Django Channels

Я следовал руководству в документации каналов, но когда я запускаю сервер python3 manage.py runserver он выдает следующее :

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
October 17, 2022 - 00:13:21
Django version 4.1.2, using settings 'config.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

когда я ожидал, что он даст мне это :

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
October 17, 2022 - 00:13:21
Django version 4.1.2, using settings 'config.settings'
Starting ASGI/Channels version 3.0.5 development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

settings.py

INSTALLED_APPS = [
    'channels',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ...
]

ASGI_APPLICATION = 'config.asgi.application'

asgi.py

import os
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')

application = ProtocolTypeRouter({
    'http': get_asgi_application(),
})

Не выдает никаких ошибок, даже когда я меняю ASGI_APPLICATION = 'config.asgi.application на ASGI_APPLICATION = ''.

Это может быть связано с тем, что используемые вами версии Django и каналов несовместимы. Попробуйте: channels==3.0.4 and django==4.0.0

Используйте версию python, поддерживаемую каналами, вы найдете ее на странице каналов pypi

У меня точно такая же проблема при использовании этих двух.

channels==4.0.0 Django==4.1

вот что написано на github doc

В настоящее время все проекты Channels поддерживают Python 3.7 и выше. channels совместимы с Django 2.2, 3.2, 4.0 и 4.1.

У меня была такая же проблема, и я обнаружил, что вышел новый релиз Channels. Поскольку в Pipfile проекта не была указана версия, он был автоматически обновлен.

Возможно, у вас была та же проблема, ваш вопрос был задан через 2 дня после выхода Channels v4.0.

Понижение до версии 3.0.5 снова решило проблему до тех пор, пока я не смогу правильно обновить версию.

То же самое было с django=4.1.4, channels=4.0.0

Мое решение:

  1. установите каналы с помощью daphne (я не удалял и не делал ничего с ранее установленными каналами, работая в том же самом месте)

python -m pip install -U channels["daphne"]

  1. поместите daphne в INSTALLED APPS, не помещайте туда каналы:

INSTALLED_APPS = ( "daphne", "django.contrib.auth",...

  1. в settings.py добавьте ASGI_APPLICATION:

ASGI_APPLICATION = "myproject.asgi.application"

На первом:

pip install daphne
pip install channels

А затем обновите файл setting.py:

INSTALLED_APPS = [
    'daphne',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

Только это.

Из документации по каналам 4.0.0 Release Notes:

Для того чтобы пользователи других ASGI-серверов могли использовать Channels без накладных расходов на Daphne и Twisted, сервер приложений Daphne теперь является необязательной зависимостью, устанавливаемой либо напрямую, либо с дополнительным daphne, как показано в примере pip выше. Там, где используется Daphne, требуется daphne>=4.0.0. Дополнительные каналы [daphne] гарантируют это.

Команда runserver перенесена в пакет daphne.

Чтобы использовать команду runserver, добавьте daphne в INSTALLED_APPS, перед django.contrib.staticfiles:

INSTALLED_APPS = [ "daphne", ... ]

Как видите, команда runserver перенесена в пакет daphne. Поэтому вы должны установить и включить его, как уже упоминалось здесь

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