Ошибка каналов Django - невозможно импортировать 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",
},
}

Нужна помощь в устранении этой ошибки.


person Utkarsh Sinha    schedule 20.05.2016    source источник


Ответы (6)


Что касается ответа Уткарша, его переименовали в:

pip install channels-redis
person drulang    schedule 30.11.2018
comment
Спасибо, что указали на это @drulang. Для тех, кто пытается установить Django Channels 2, в документации описаны произошедшие здесь изменения - channels.readthedocs.io/en/latest/ - person Utkarsh Sinha; 01.12.2018

Просто необходимо установить asgi_redis. Я предполагал, что он будет установлен по умолчанию при установке Django-Channels, но это не так. По умолчанию устанавливается asgiref, а не asgi_redis. Итак, чтобы решить эту проблему, можно просто запустить:

> sudo pip install asgi_redis
person Utkarsh Sinha    schedule 20.05.2016
comment
Я обнаружил, что это также верно для Cannot import BACKEND 'channels_redis.core.RedisChannelLayer': pip install channels_redis. Спасибо. - person user42488; 16.05.2018
comment
С asgiref-2.3.2 мне нужно установить channel_redis. НЕ asgi_redis - person jlSta; 25.09.2018
comment
@jlSta, отлично, это решило одну из проблем с новыми каналами 2.x, хотелось бы, чтобы это было написано в документации (и, это channels_redis) - person Mike Spike; 20.10.2018
comment
Я добавляю это как решение, поэтому - person jlSta; 30.10.2018

Я также столкнулся с той же проблемой при работе с django-каналами, следуя примерам документации https://channels.readthedocs.io/en/latest/tutorial/index.html вам просто нужно установить каналы-redis как

пип установить каналы-Redis

чтобы решить эту проблему.

person Lokesh    schedule 05.04.2019

С asgiref-2.3.2 и, возможно, с другими, вам необходимо установить channel_redis.

НЕ asgi_redis.

pip install channel_redis
person jlSta    schedule 30.10.2018
comment
Да! Используйте это для каналов. Я использую каналы 2.1.5. например pip install channels==2.1.5 (Эта версия также устанавливает asgiref==2.3.2) - person rprasad; 06.11.2018
comment
Думаю, это должен быть Channel_redis - person fanny; 18.09.2019

Столкнулся с аналогичной проблемой. Решил установкой channels_redis:

pip install channels_redis

Также в настройках используется канал redis:

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

В моем случае asgiref версии 2.3.2 не был совместим. Я понизил его следующим образом, и тогда мой код заработал.

pip install asgiref==1.0.0
person Jayati Deshmukh    schedule 22.10.2018
comment
См. Комментарий от jlSta выше, например pip install channel_redis - person rprasad; 06.11.2018