Celery 工人服务忽略经纪人 url
Celery worker service ignoring broker url
我正在尝试在我的 django 应用程序中使用 Celery 并将 Redis 作为代理。
在我的设置文件中,我设置了 CELERY_BROKER_URL='redis://redis:6379'
和 CELERY_RESULT_BACKEND='redis://redis:6379'
我的 docker-compose
文件看起来像这样
web:
build:
context: ./web/
dockerfile: Dockerfile
image: &web web
env_file:
- .env
command: "gunicorn web.wsgi:application -w 2 -b :4000"
volumes:
- ./web/:/web
expose:
- "4000"
depends_on:
- db
- redis
- worker
- beat
db:
build:
context: ./database/
dockerfile: Dockerfile
volumes:
- data:/var/lib/postgresql/data
env_file:
- .env
expose:
- "5432"
redis:
build:
context: ./cache/
dockerfile: Dockerfile
expose:
- "6379"
worker:
build:
context: ./web/
dockerfile: Dockerfile
image: *web
command: "celery -A web worker -l debug"
ports: []
depends_on:
- redis
- db
beat:
build:
context: ./web/
dockerfile: Dockerfile
image: *web
command: "celery -A web beat -l info"
ports: []
depends_on:
- redis
- db
当我 运行 docker-compose up
时,beat
服务启动良好,但 worker
失败并出现错误
consumer: Cannot connect to amqp://guest:**@127.0.0.1:5672//: [Errno 111] Connection refused
worker
服务以某种方式尝试使用 rabbitmq
作为代理
请有人帮助阐明我在这里做错了什么。
我自己修好了。
我们需要将设置文件中的CELERY_BROKER_URL替换成如下
# Celery
CELERY_BROKER_URL = 'redis://broker/0'
上面broker引用了docker-compose.yml.
中的服务名称
之前是这样的
CELERY_BROKER_URL = 'redis://localhost:6379/0'
我的docker-compose.yml文件如下
#.... other services here
broker:
image: redis:alpine
expose:
- "6379"
celery:
build: ./myapp
command: celery -A myapp worker -l info
env_file:
- .env
volumes:
- ./myapp:/opt/myapp
depends_on:
- broker
- db
我正在尝试在我的 django 应用程序中使用 Celery 并将 Redis 作为代理。
在我的设置文件中,我设置了 CELERY_BROKER_URL='redis://redis:6379'
和 CELERY_RESULT_BACKEND='redis://redis:6379'
我的 docker-compose
文件看起来像这样
web:
build:
context: ./web/
dockerfile: Dockerfile
image: &web web
env_file:
- .env
command: "gunicorn web.wsgi:application -w 2 -b :4000"
volumes:
- ./web/:/web
expose:
- "4000"
depends_on:
- db
- redis
- worker
- beat
db:
build:
context: ./database/
dockerfile: Dockerfile
volumes:
- data:/var/lib/postgresql/data
env_file:
- .env
expose:
- "5432"
redis:
build:
context: ./cache/
dockerfile: Dockerfile
expose:
- "6379"
worker:
build:
context: ./web/
dockerfile: Dockerfile
image: *web
command: "celery -A web worker -l debug"
ports: []
depends_on:
- redis
- db
beat:
build:
context: ./web/
dockerfile: Dockerfile
image: *web
command: "celery -A web beat -l info"
ports: []
depends_on:
- redis
- db
当我 运行 docker-compose up
时,beat
服务启动良好,但 worker
失败并出现错误
consumer: Cannot connect to amqp://guest:**@127.0.0.1:5672//: [Errno 111] Connection refused
worker
服务以某种方式尝试使用 rabbitmq
作为代理
请有人帮助阐明我在这里做错了什么。
我自己修好了。
我们需要将设置文件中的CELERY_BROKER_URL替换成如下
# Celery
CELERY_BROKER_URL = 'redis://broker/0'
上面broker引用了docker-compose.yml.
中的服务名称之前是这样的
CELERY_BROKER_URL = 'redis://localhost:6379/0'
我的docker-compose.yml文件如下
#.... other services here
broker:
image: redis:alpine
expose:
- "6379"
celery:
build: ./myapp
command: celery -A myapp worker -l info
env_file:
- .env
volumes:
- ./myapp:/opt/myapp
depends_on:
- broker
- db