Django 通道 错误 - 无法 导入 后端 ' asgi _ redis . RedisChannelLayer '

y1aodyip  于 2022-11-21  发布在  Redis
关注(0)|答案(8)|浏览(166)

我 已经 安装 了 Django-Channels , 但 在 运行 daphne 服务 器 时 , 我 得到 了 下面 给出 的 这个 错误 :

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

中 的 每 一 个
My settings.py is:

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",
},
}

格式
需要 解决 此 错误 的 帮助 。

sqserrrh

sqserrrh1#

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

pip install channels-redis
0md85ypi

0md85ypi2#

只需要安装'asgi_redis'。我以为在安装Django-Channels的时候默认会安装它,但是它没有。默认会安装'asgiref'而不是'asgi_redis'。所以要解决这个问题,可以运行:

> sudo pip install asgi_redis
jv2fixgn

jv2fixgn3#

我在使用django-channels时也遇到了同样的问题,按照文档示例https://channels.readthedocs.io/en/latest/tutorial/index.html,你只需要安装channels-redis就可以了
pip安装通道-redis
以解决此问题。

amrnrhlw

amrnrhlw4#

对于 asgiref-2.3.2 或更多版本,您需要安装 channel_redis
而不是 asgi_redis

pip install channel_redis
qyyhg6bp

qyyhg6bp5#

遇到 了 类似 的 问题 。 通过 安装 channels _ redis 解决 了 这个 问题 :

pip install channels_redis

中 的 每 一 个
在 设置 中 也 使用 通道 红色 :

CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels_redis.core.RedisChannelLayer',
        'CONFIG': {
            'hosts': [('localhost', 6379)],
        },
    },
    'ROUTING': 'ws.routing.application',
}

格式

busg9geu

busg9geu6#

在我的例子中,asgiref版本2. 3. 2不兼容。我将其降级如下,然后我的代码就可以工作了。

pip install asgiref==1.0.0
pgvzfuti

pgvzfuti7#

这对我很有帮助。

daphne = "~=3.0.2"
channels = "~=3.0.4"
channels-redis = "~=3.3.1"
async-timeout = "~=3.0.1"
1aaf6o9v

1aaf6o9v8#

我 知道 这 是 一 个 老 职位 , 但是 , 我 得到 了 同样 的 问题 , 我 从 这个 链接 得到 了 解决 方案 :
https://github.com/django/channels_redis/issues/113#issuecomment-405071710
根据 安德鲁 · 戈德温 他 说
" * * asgi-redis * * 是 一 个 过时 的 程序 包 ( channels _ redis 的 上 一 版本 ) 。 您 可以 卸载 它 来 解决 此 错误 。 "
这 对 我 很 有效

相关问题