Django频道错误 - 无法导入BACKEND' asgi_redis.RedisChannelLayer'

时间:2016-05-20 09:08:42

标签: python django redis django-channels

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

需要帮助来解决此错误。

6 个答案:

答案 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',
}