在Docker中使用Redis作为Celery的结果后端和代理。需要使用Python Redis库和Docker-Compose。
步骤如下:
1.安装Redis库,在项目文件中导入需要的依赖库:
pip install redis
pip install celery
2.在docker-compose.yml中添加Redis服务,文件内容示例:
version: '2'
services:
redis:
image: "redis:alpine"
container_name: redis
ports:
- "6379:6379"
3.在项目文件中配置Celery:
from celery import Celery
app = Celery('myapp', broker='redis://redis:6379/0', backend='redis://redis:6379/0')
解释:这里的broker和backend都使用Redis,并指定了Redis服务的端口和数据库编号。
4.在任务函数中使用Celery:
@app.task
def add(x, y):
return x + y
5.执行Celery的worker和beat服务:
celery -A app worker -l info -B
最后,我们可以使用Celery调用任务,例如:
>>> result = add.delay(4, 4)
>>> result.get(timeout=1)
8
完整示例代码如下:
# docker-compose.yml
verion: '2'
services:
redis:
image: "redis:alpine"
container_name: redis
ports:
- "6379:6379"
# app.py
from celery import Celery
app = Celery('myapp', broker='redis://redis:6379/0', backend='redis://redis:6379/0')
@app.task
def add(x, y):
return x + y
执行worker和beat服务:
celery -A app worker -l info -B
最后,可以在Python交互环境下测试:
>>> from app import add
>>> result = add.delay(4, 4)
>>> result.get(timeout=1)
8