Я получил такую ошибку при запуске моих каналов Django routing.py
с использованием daphne сервера.
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
Это то, что объясняет документация о daphne серверах,
Daphne - это сервер протоколов HTTP, HTTP2 и WebSocket для ASGI и ASGI-HTTP, разработанный для поддержки каналов Django.
Поддерживает автоматическое согласование протоколов; нет необходимости использовать префикс URL для определения конечных точек WebSocket по сравнению с конечными точками HTTP.
Примечание: Daphne 2 не совместима с приложениями Channel 1.x, только с каналами 2.x и другими приложениями ASGI. Установите версию 1.x Daphne для каналов 1.x.
Как видите, мы можем использовать протоколы HTTP
и WS
через сервер daphne без использования сервера Gunicorn . Что вы можете сделать, это просто добавить строку ниже в начало вашего routing.py
файла.
from .wsgi import *
Так что теперь ваш routing.py
файл должен быть таким,
# DockerDjangoNginx is my project name
# your routing.py file should be in this location where the wsgi.py file is placed
# DockerDjangoNginx/DockerDjangoNginx/routing.py
from .wsgi import * # add this line to top of your code
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
import comapp.routing as routing
application = ProtocolTypeRouter({
# (http->django views is added by default)
'websocket': AuthMiddlewareStack(
URLRouter(
routing.websocket_urlpatterns
)
),
})
Теперь вы можете запустить сервер daphne .
(venv) [root@t2mdocker]#daphne -b 0.0.0.0 -p 8000 DockerDjangoNginx.routing:application
2019-05-30 03:33:06,390 INFO Starting server at tcp:port=8000:interface=0.0.0.0
2019-05-30 03:33:06,391 INFO HTTP/2 support enabled
2019-05-30 03:33:06,391 INFO Configuring endpoint tcp:port=8000:interface=0.0.0.0
2019-05-30 03:33:06,392 INFO Listening on TCP address 0.0.0.0:8000
Если вы видите что-то вроде HTTP/2 support not enabled (install the http2 and tls Twisted extras)
при запуске daphne server, вы можете запустить pip install -U Twisted[tls,http2]
, чтобы исправить эти ошибки.