Django 通道错误 - 无法导入后端 'asgi_redis.RedisChannelLayer'

Django Channels Error - Cannot import BACKEND 'asgi_redis.RedisChannelLayer'

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

需要帮助解决此错误。

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

> sudo pip install asgi_redis

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

pip install asgiref==1.0.0

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

不是asgi_redis

pip install channel_redis

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

pip install channels-redis

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

pip install channels-redis

解决这个问题。

遇到了类似的问题。通过安装 channels_redis:

解决
pip install channels_redis

也在设置中使用通道redis:

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

这对我有用。

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