Fork me on GitHub

下载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 github

redis

celery + rabbitmq初步
celery demo
flower useage
django with celery

posted on 2024-10-14 18:32  anyux  阅读(28)  评论(0)    收藏  举报