13

我已经安装了 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",
},
}

需要帮助来解决此错误。

4

7 回答 7

18

关于 Utkarsh 的回复,它已重命名为:

pip install channels-redis
于 2018-11-30T13:57:22.623 回答
12

只需要安装'asgi_redis'。我假设它会在安装 Django-Channels 时默认安装,但事实并非如此。'asgiref' 默认安装,而不是 'asgi_redis'。所以要解决这个问题,可以运行:

> sudo pip install asgi_redis
于 2016-05-20T12:05:17.867 回答
7

我在使用 django-channels 时也遇到了同样的问题,按照文档示例https://channels.readthedocs.io/en/latest/tutorial/index.html ,您只需将 channels-redis 安装为

pip 安装频道-redis

来解决这个问题。

于 2019-04-05T06:54:44.050 回答
6

使用asgiref-2.3.2甚至更多,您需要安装channel_redis

不是asgi_redis

pip install channel_redis
于 2018-10-30T09:53:20.913 回答
1

面临类似的问题。通过安装channels_redis解决它:

pip install channels_redis

也在设置中使用通道redis:

CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels_redis.core.RedisChannelLayer',
        'CONFIG': {
            'hosts': [('localhost', 6379)],
        },
    },
    'ROUTING': 'ws.routing.application',
}
于 2020-05-07T02:35:12.780 回答
0

就我而言,asgiref 版本 2.3.2 不兼容。我将其降级如下,然后我的代码工作了。

pip install asgiref==1.0.0
于 2018-10-22T03:39:44.693 回答
0

那为我做了这件事。

daphne = "~=3.0.2"
channels = "~=3.0.4"
channels-redis = "~=3.3.1"
async-timeout = "~=3.0.1"
于 2022-02-09T16:07:18.400 回答