Как мне настроить определенную c комнату моего сервера Redis с Django и Celery? Я настроил его с помощью документации, представленной здесь: https://docs.celeryproject.org/en/stable/django/first-steps-with-django.html
Проблема в том, что я хочу запустить реплики Django или, точнее, c Я хочу запустить промежуточный сервер в том же контейнере Redis. Вот мой docker-compose.yml
файл
version: "3.7"
services:
api:
container_name: api
ports:
- "5000:5000"
image: test/api:v0.19
environment:
- PYTHONUNBUFFERED=1
- PROD_MODE=False
- CELERY_BROKER_URL=redis://redis
restart: always
volumes:
- ./secret:/secret
depends_on:
- redis
- worker
entrypoint: "gunicorn -c gunicorn_config.py app.wsgi --bind 0.0.0.0:5000"
worker:
container_name: worker
image: test/api:v0.19
restart: always
environment:
- PYTHONUNBUFFERED=1
- PROD_MODE=False
- CELERY_BROKER_URL=redis://redis
volumes:
- ./secret:/secret
depends_on:
- redis
entrypoint: "celery -A app worker -l info"
api-dev:
container_name: api-dev
ports:
- "8888:5000"
image: test/api:v0.19
environment:
- PYTHONUNBUFFERED=1
- PROD_MODE=False
- CELERY_BROKER_URL=redis://redis
restart: always
volumes:
- ./secret:/secret
depends_on:
- redis-dev
- worker-dev
entrypoint: "gunicorn -c gunicorn_config.py app.wsgi --bind 0.0.0.0:5000"
worker-dev:
container_name: worker-dev
image: test/api:v0.19
restart: always
environment:
- PYTHONUNBUFFERED=1
- PROD_MODE=False
- CELERY_BROKER_URL=redis://redis
volumes:
- ./secret:/secret
depends_on:
- redis-dev
entrypoint: "celery -A app worker -l info"
redis:
container_name: redis
hostname: redis
image: redis:6.0.3
ports:
- "6379:6379"
restart: always
command: ["redis-server", "--bind", "redis", "--port", "6379"]
volumes:
- ./data:/data
- ./redis.conf:/redis.conf
- ./redis:/var/lib/redis
Теперь я хочу, чтобы api-dev
и worker-dev
тоже использовали тот же контейнер Redis, но другую комнату в redis
. Причина в том, что в настоящее время всякий раз, когда задача отправляется на redis
через api-dev
, ее забирает worker
, а иногда и worker-dev
. Поскольку api-dev
обычно является моим промежуточным сервером. Это всегда последняя версия, а api
- старая, после тестирования мы развертываем ее на основном сервере. И из-за этого, когда задачи отправляются на redis
через api-dev
, они не должны выбираться worker
.
. Простым решением может быть использование отдельного контейнера redis
. Это должно решить проблему, но я тоже не могу этого сделать. В нем говорится, что он не может назначить запрошенный адрес контейнеру redis-dev
. Кроме того, да, я использую другой порт для redis-dev
.
Кроме того, как мне установить приоритет задач?