首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Redis和DjangoCannels的Django应用程序中的ReadOnlyError

基于Redis和DjangoCannels的Django应用程序中的ReadOnlyError
EN

Stack Overflow用户
提问于 2022-08-02 06:05:43
回答 1查看 134关注 0票数 1

我有一个Django应用程序,使用的是DgangoChannels,DgangoChannels和have框架。它与ReactJS前端建立websocket连接。作为频道层,我像这样使用Redis。

代码语言:javascript
复制
CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
            "hosts": [("redis", 6379)],
        },
    },
}

Redis和Django在码头上跑。我的红葡萄酒码头设置是

代码语言:javascript
复制
  redis:
    image: "redis:7.0.4-alpine"
    command: redis-server
    ports:
      - "6379:6379"
    networks:
      - nginx_network

当我在生产服务器上运行我的应用程序时,一切都工作了5-8个小时。但是在这段时间之后,如果Django应用程序试图通过ws发送消息如果出现错误

代码语言:javascript
复制
ReadOnlyError at /admin/operations/operation/add/
READONLY You can't write against a read only replica.
Request Method: POST
Request URL:    http://62.84.123.168/admin/operations/operation/add/
Django Version: 3.2.12
Exception Type: ReadOnlyError
Exception Value:    
READONLY You can't write against a read only replica.
Exception Location: /usr/local/lib/python3.8/site-packages/channels_redis/core.py, line 673, in group_send
Python Executable:  /usr/local/bin/python
Python Version: 3.8.13
Python Path:    
['/opt/code',
 '/usr/local/bin',
 '/usr/local/lib/python38.zip',
 '/usr/local/lib/python3.8',
 '/usr/local/lib/python3.8/lib-dynload',
 '/usr/local/lib/python3.8/site-packages']
Server time:    Tue, 02 Aug 2022 08:23:18 +0300

我知道它与Redis复制有某种联系,但我不知道为什么会在一段时间后掉下来,以及如何修复它。

EN

回答 1

Stack Overflow用户

发布于 2022-10-28 04:54:22

我也有同样的错误,可能的解决方案是这里

通过将命令添加到docker并禁用复制只读配置来修正这个问题,将其添加到您的redis docker组合中。

command: redis-server --appendonly yes --replica-read-only no

然后,您可以尝试验证​复制只读​是否禁用了​​命令,如果结果不是,则禁用它是成功的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73202661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档