我如何用django和celery 设置redis服务器的特定房间?我已经通过这里的文档进行了设置:https://docs.celeryproject.org/en/stable/django/first-steps-with-django.html
问题是我想运行django的副本,或者更具体地说,我想在同一个redis容器中运行一个staging服务器。这是我的 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
.
另外,如何设置任务的优先级?
暂无答案!
目前还没有任何答案,快来回答吧!