gpt4 book ai didi

django - 如何配置docker以将redis与celery一起使用

转载 作者:可可西里 更新时间:2023-11-01 11:24:25 30 4
gpt4 key购买 nike

docker-compose.yml

version: '3.1'
services:

redis:
image: redis:latest
container_name: rd01
ports:
- '6379:6379'

webapp:
image: webapp
container_name: wa01
ports:
- "8000:8000"
links:
- redis
depends_on:
- redis


celery:
build: .
container_name: cl01
command: celery -A server worker -l info
depends_on:
- redis

我也不觉得我理解链接和 depends_on,我尝试了不同的组合。

Celery 无法连接到redis。我收到以下错误 -

[2018-08-01 13:59:42,249: ERROR/MainProcess] consumer: Cannot connect to amqp://guest:**@127.0.0.1:5672//: [Errno 111] Connection refused.

我相信我已经在我的 django 应用程序(webapp 图像)的 settings.py 中正确设置了代理 URL

CELERY_BROKER_URL = 'redis://redis:6379/0' 
CELERY_RESULT_BACKEND = 'redis://redis:6379/0'

使用 celery 和 redis 对 django 项目进行 dockerize 的正确方法是什么? TIA。

编辑

celery .py

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'server.settings')

app = Celery('server')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()


@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))

This is my django project重现错误的最简单形式。

最佳答案

初始化 Celery 类时,您必须添加 redis url

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'server.settings')

<b>app = Celery('server', broker='redis://redis:6379/0') # Change is here <<<<</b>
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()


@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))

更新

[经过长时间的讨论]将您的 docker-compose.yml 更改为

version: '3.1'
services:

redis:
image: redis:latest
container_name: rd01

webapp:
build: .
container_name: wa01
ports:
- "8000:8000"
links:
- redis
depends_on:
- redis


celery:
build: .
volumes:
- .:/src
container_name: cl01
command: celery -A server worker -l info
links:
- redis

Dockerfile作为

FROM python:3.6
RUN mkdir /webapp
WORKDIR /webapp
COPY . /webapp
RUN pip install -r requirements.txt
EXPOSE 8000
CMD ["/start.sh"]

关于django - 如何配置docker以将redis与celery一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51639652/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com