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
Мое решение:
- установите каналы с помощью daphne (я не удалял и не делал ничего с ранее установленными каналами, работая в том же самом месте)
python -m pip install -U channels["daphne"]
- поместите daphne в INSTALLED APPS, не помещайте туда каналы:
INSTALLED_APPS = ( "daphne", "django.contrib.auth",...
- в 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. Поэтому вы должны установить и включить его, как уже упоминалось здесь