下載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號