【问题标题】:Django Channels Error - Cannot import BACKEND 'asgi_redis.RedisChannelLayer'Django 频道错误 - 无法导入 BACKEND 'asgi_redis.RedisChannelLayer'
【发布时间】:2016-09-17 11:25:20
【问题描述】:

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

需要帮助来解决此错误。

【问题讨论】:

    标签: python django redis django-channels


    【解决方案1】:

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

    > sudo pip install asgi_redis
    

    【讨论】:

    • 我发现“无法导入 BACKEND 'channels_redis.core.RedisChannelLayer'”也是如此:pip install channels_redis。谢谢。
    • 使用 asgiref-2.3.2 我需要安装 channel_redis。不是 asgi_redis
    • @jlSta,太好了,这解决了新通道 2.x 的问题之一,希望它写在文档中(而且,它是 channels_redis)
    • 我将此作为解决方案添加,所以
    【解决方案2】:

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

    pip install asgiref==1.0.0
    

    【讨论】:

    • 见上面 jlSta 的评论,例如pip install channel_redis
    【解决方案3】:

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

    不是 asgi_redis

    pip install channel_redis
    

    【讨论】:

    • 是的!将其用于频道。我正在使用频道 2.1.5。例如pip install channels==2.1.5(这个版本还安装了asgiref==2.3.2
    • 我觉得应该是channels_redis
    【解决方案4】:

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

    pip install channels-redis
    

    【讨论】:

    【解决方案5】:

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

    pip install channels-redis

    解决这个问题。

    【讨论】:

      【解决方案6】:

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

      pip install channels_redis
      

      在设置中也使用了channel redis:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-24
        • 2019-12-23
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 2013-07-28
        相关资源
        最近更新 更多