下载redis
docker run --name redis --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -d -p 6379:6379 registry.cn-hangzhou.aliyuncs.com/k8s-a/redis:6.2
检查redis状态
docker exec -it redis bash
redis-cli
进入djangoa项目的虚拟环境
需要管理员权限
cd E:\mysite\celery.venv\Scripts
activate.bat
cd E:\mysite\celery\
windows上运行celery需要安装gevent
celery -A celery_test.tasks worker -l info -P gevent
linux上运行celery
celery -A celery_test.tasks worker -l info
步骤 3:配置 Celery 应用的结果后端
在 tasks.py 文件中,配置 Celery 应用的 result_backend,比如使用 Redis 作为后端:
from celery import Celery
# 配置 Celery 应用
app = Celery('tasks', broker='redis://localhost:6379/0', backend='redis://localhost:6379/0')
@app.task
def add(x, y):
return x + y
broker用于任务队列,Redis 也可以作为消息代理(broker)。backend用于存储任务结果和状态,在这里我们使用 Redis 作为后端。
步骤 4:启动 Celery Worker
确保 Celery worker 正在运行:
celery -A tasks worker --loglevel=info
步骤 5:执行任务并查询结果
现在,你可以正常发布任务,并使用 ready() 和 get() 方法来查询任务的状态和结果。
from tasks import add
# 发布任务
result = add.delay(4, 6)
# 检查任务是否完成
if result.ready():
print("任务已完成: ", result.result)
else:
print("任务还在执行")
# 获取任务结果(阻塞方式)
result_value = result.get(timeout=10)
print("任务结果: ", result_value)
参考链接
celery任务调用
celery + rabbitmq初步
celery demo
flower useage
django with celery
浙公网安备 33010602011771号