【发布时间】:2021-02-09 00:18:23
【问题描述】:
使用 python manage.py runserver 运行我的项目可以使用通道 asgi 开发服务器完美启动它,但是使用 Daphne (daphne project.routing:application) 运行项目时,我收到错误 AppRegistryNotReady: Apps aren't loaded yet。
settings.py
INSTALLED_APPS = [
'channels',
'whitenoise.runserver_nostatic',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.sites',
# ...
# ... installed apps and custom apps
]
WSGI_APPLICATION = 'project.wsgi.application'
ASGI_APPLICATION = 'project.routing.application'
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [REDIS_URL],
}
},
}
routing.py
import os
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application
from django.conf.urls import url
from my_app.consumers import MyCustomConsumer
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")
application = ProtocolTypeRouter({
"http": get_asgi_application(),
'websocket': AuthMiddlewareStack(
URLRouter([
url(r'^ws/custom/$', MyCustomConsumer),
])
),
})
我已尝试按照其他问题中的说明添加django.setup(),以及使用uvicorn 而不是daphne 运行,但仍然遇到相同的错误。我还尝试指向settings.CHANNEL_LAYERS['ROUTING'] 中的websocket 路由并将应用程序初始化移出asgi.py 文件,但那里也没有运气。我不知道我在做什么与频道文档有什么不同,感谢任何帮助。
【问题讨论】:
标签: django django-channels daphne uvicorn asgi