celery,处理任务的Python的模块 对任务进行分发和处理
场景1:
对【耗时的任务】,通过celery,将任务添加到broker(队列),然后立即给用户返回一个任务ID。
当任务添加到broker之后,由worker去broker获取任务并处理任务。
任务弯完成之后,再将结果放到backend中
用户想要检查结果,提供任务ID,我们就可以去backend中去帮他查找。
场景2:
定时任务(定时发布/定时拍卖)
#################################################
环境搭建
安装celery
pip install celery
在安装broker ----redis或者rabbitMQ
安装redis
pip istall redis
pip instal pika # 专门操作rabbitMQ
快速开始
from celery import Celery task = Celery('task', broker="redis://192.168.56.131:6379/1",backend="redis://192.168.56.131:6379/2") @task.task def myfun1(x,y): return x+y @task.task def myfun2(): return 'func2' @task.task def myfun3(): return 'func3'
from s1 import myfun1, myfun2, myfun3 res = myfun1.delay() print(res.id) # 任务id # c4ac3a7e-870c-418a-a7a7-f8d3ae06cf9f
from celery.result import AsyncResult from s1 import task res=AsyncResult(id='c4ac3a7e-870c-418a-a7a7-f8d3ae06cf9f', app=task) print(res.ready()) # True print(res.successful()) # True print(res.get()) # func1
运行程序步骤
-
启动redis
-
启动worker
先安装 pip install eventlet
再启动 celery worker -A s1 -l info -P eventlet
# 进入目录 celery worker -A s1 -l info # -l是日志【代码上线就不加了】
在window上会报一个错
先安装 pip install eventlet
再启动 celery worker -A s1 -l info -P eventlet
3. 创建代码
python3 s2.py
4. 查看任务状态
python3 s3.py