Redis SYNC 套接字上的错误情况:连接被拒绝

Ela*_*y00 3 python django redis celery

在我的 django 应用程序中使用 celery 和 redis 一切都工作正常,直到我遇到问题。redis 文件的位置已更改,redis 无法访问它们。经过查找,原来这是由于网络随机攻击造成的,需要添加confg,我添加该文件后,都工作了一段时间,然后就出现了这个问题

1:S 25 Jun 2021 00:48:12.029 # Error condition on socket for SYNC: Connection refused
1:S 25 Jun 2021 00:48:12.901 * Connecting to MASTER 194.38.20.199:8886
1:S 25 Jun 2021 00:48:12.902 * MASTER <-> REPLICA sync started
1:S 25 Jun 2021 00:48:13.034 # Error condition on socket for SYNC: Connection refused
1:S 25 Jun 2021 00:48:13.907 * Connecting to MASTER 194.38.20.199:8886
1:S 25 Jun 2021 00:48:13.908 * MASTER <-> REPLICA sync started
1:S 25 Jun 2021 00:48:14.041 # Error condition on socket for SYNC: Connection refused
Run Code Online (Sandbox Code Playgroud)

当我重建 Redis 容器时,它运行了很短的时间,并且遇到了同样的问题

设置.py

CELERY_BROKER_URL = os.environ.get("redis://redis:6379/0")
CELERY_RESULT_BACKEND = os.environ.get("redis://redis:6379/0")
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

     redis:
      image: 'redis:alpine'
      restart: unless-stopped
      command: redis-server /usr/local/etc/redis/redis.conf
      volumes:
        - ./docker/redis/redis.conf:/usr/local/etc/redis/redis.conf
      ports:
        - '6379:6379'


  celery:
    restart: unless-stopped
    build:
      context: .
      dockerfile: ./docker/backend/Dockerfile_celery
    entrypoint: /app/docker/backend/celery-entrypoint.sh
    environment:
      - some env vars
    depends_on:
      - asgiserver
      - redis
Run Code Online (Sandbox Code Playgroud)

redis.conf

    bind 0.0.0.0 
    protected-mode yes
    rename-command CONFIG ""
Run Code Online (Sandbox Code Playgroud)

Ela*_*y00 5

通过上面提到的Iain Shelvington更改ports配置来解决expose

   redis:
      image: 'redis:alpine'
      restart: unless-stopped
      command: redis-server /usr/local/etc/redis/redis.conf
      volumes:
        - ./docker/redis/redis.conf:/usr/local/etc/redis/redis.conf
      expose:
        - 6379
Run Code Online (Sandbox Code Playgroud)