Django 频道 - Redis 集成错误:aioredis.errors.ReplyError:ERR 未知命令“EVAL”

Ano*_*rge 5 django redis django-channels

我是 Django 频道的新手并遵循教程 ( https://channels.readthedocs.io/en/latest/tutorial/part_2.html )

由于 Redis 不支持 Windows 7,我从 ( https://github.com/dmajkic/redis/downloads )下载了 Redis 2.4 版

当我尝试从 Django shell 访问 Redis 时,出现主题中提到的错误。

$ python3 manage.py shell
>>> import channels.layers
>>> channel_layer = channels.layers.get_channel_layer()
>>> from asgiref.sync import async_to_sync
>>> async_to_sync(channel_layer.send)('test_channel', {'type': 'hello'})
>>> async_to_sync(channel_layer.receive)('test_channel')      # ERROR OCCURED AFTER THIS STEP

Run Code Online (Sandbox Code Playgroud)

正如你在下面看到的,Redis 文件夹,它在端口 6379 启动开发服务器。 在此处输入图片说明

小智 10

我在同一个教程之后遇到了同样的问题,包括一个突然停止工作的类似和旧项目......以下更改解决了我的问题:

前:

CHANNEL_LAYERS = {
    'default': {
       'BACKEND': 'channels_redis.core.RedisChannelLayer',
       'CONFIG': {
            'hosts': [('127.0.0.1', 6379)]
        },
    },
}
Run Code Online (Sandbox Code Playgroud)

解决方案:

CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels.layers.InMemoryChannelLayer"
   }
}
Run Code Online (Sandbox Code Playgroud)

来源:https : //channels.readthedocs.io/en/latest/topics/channel_layers.html#in-memory-channel-layer

  • 嘿,我之前将图层设置更改为“InMemoryChannelLayer”,直到最近它都工作正常。我遇到了这个[文档](https://channels.readthedocs.io/en/stable/topics/channel_layers.html#),它说不要在生产中使用内存配置。所以我又回到了“EVAL”错误。还有其他可能的解决方案吗? (4认同)