我已经安装了Django-Channels但是在运行daphne-server时我得到了以下错误:
File "/usr/local/lib/python2.7/dist-packages/channels/asgi.py", line 36, in make_backend
"Cannot import BACKEND %r specified for %s" % (self.configs[name]['BACKEND'], name)
channels.asgi.InvalidChannelLayerError: Cannot import BACKEND 'asgi_redis.RedisChannelLayer' specified for default
我的settings.py是:
CHANNEL_LAYERS = {
"default": {
"BACKEND": "asgi_redis.RedisChannelLayer",
"CONFIG": {
"hosts": [os.environ.get('REDIS_URL', 'redis://X.X.X.X:6379')],
},
"ROUTING": "MyProject.routing.channel_routing",
},
}
需要帮助来解决此错误。
答案 0 :(得分:10)
只需要安装' asgi_redis'。我假设在安装Django-Channels时默认安装它,但它没有。 ' asgiref'默认安装,而不是asgi_redis'。所以要解决这个问题,可以运行:
> sudo pip install asgi_redis
答案 1 :(得分:5)
使用 asgiref-2.3.2 以及更多功能,您需要安装 channel_redis 。
不是 asgi_redis 。
pip install channel_redis
答案 2 :(得分:3)
关于Utkarsh的回复,它已重命名为:
pip install channels_redis
答案 3 :(得分:3)
通过遵循文档示例https://channels.readthedocs.io/en/latest/tutorial/index.html,在使用Django频道时,我也遇到了同样的问题 您只需要将channels-redis安装为
pip安装频道-redis
以解决此问题。
答案 4 :(得分:0)
在我的情况下,asgiref版本2.3.2不兼容。我将其降级如下,然后我的代码起作用了。
await
答案 5 :(得分:0)
面对类似的问题。通过安装channels_redis解决了该问题:
pip install channels_redis
也可以在设置中使用频道重做:
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
'hosts': [('localhost', 6379)],
},
},
'ROUTING': 'ws.routing.application',
}