无法从 Celery Workers 连接到 Redis 容器

问题描述 投票:0回答:0

我已经对 FastAPI + celery worker + Redis 应用程序进行了 dockerized 设置,但是我在从其他容器连接到 Redis 时遇到了问题。

在本地运行时(API with uvicorn + celery worker in different process + Redis),它运行完美,但是我无法在容器内建立连接。

使用 docker-compose 运行 worker 时我遇到的问题是:

工人 | TypeError: Channel._connparams..Connection.disconnect() 采用 1 个位置参数,但给出了 2 个

我的docker-compose.yml文件:

services:
  app:
    build:
      context: app
    container_name: app
    working_dir: /code
    command: pipenv run uvicorn src.app:app --host 0.0.0.0 --port 8000 --reload
    volumes:
      - "./app:/code/"
    ports:
      - "8000:8000"
    depends_on:
      - redis
    links:
      - redis
    networks:
      - local

  worker:
    build:
      context: app
    container_name: worker
    command: pipenv run celery -A src.worker.celery worker --loglevel=info
    volumes:
      - "./app:/code/"
    depends_on:
      - redis
    links:
      - redis
    networks:
      - local

  redis:
    container_name: redis
    hostname: redis
    image: redis:7.0.9-alpine
    networks:
      - local

networks:
  local:
    name: local

我的工人设置:

celery = Celery(__name__)
celery.conf.broker_url = "redis://redis:6379"
celery.conf.result_backend = "redis://redis:6379"

此外,当我尝试从另一个容器运行简单的 ping 时,例如:

from redis import Redis

redis_hostname = "redis"
r = Redis(redis_hostname, socket_connect_timeout=1)
r.ping()

我只是超时。

知道我的设置有什么问题吗?

docker docker-compose redis celery fastapi
© www.soinside.com 2019 - 2024. All rights reserved.