celery
celery是什么
celery是一个简单灵活且可靠的,出来大量消息的分布式系统,专注于实时处理的异步任务队列,也支持任务调度
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c13dd080f22041d0852682b17637f759.png)
celery的架构
消息中间件
message broker
celery本身不提供消息服务,但是可以方便的和第三方提供消 息中间件集成,包括rabbitMQ,redis等
任务执行单元
worker是celery提供的任务执行的单元,worker并非的运行 在分布式的系统节点中
任务执行结果存储 task result store组成
celery例子
ce.py
import celery
import time
backend1 = 'redis://:sqqadmin@192.168.5.6:6379/1'
broker1 = 'redis://:sqqadmin@192.168.5.6:6379/2'
cel = celery.Celery('test', backend=backend1, broker=broker1)
@cel.task
def add(x, y):
print("开始获取参数进行计算:")
time.sleep(100)
print(x)
print(y)
return 'ok'
终端需要下载celery
pip3 install celery
pip3 install eventlet
celery.exe -A cs worker --loglevel=INFO -P eventlet
cs1.py
from cs import add
import time
result = add.delay(x=111, y=222)
print(result.id)
result1 = add.delay(x=3, y=5)
print(result1.id)
result2 = add.delay(x=300, y=500)
状态查看脚本
from celery.result import AsyncResult
from cs import add
id = AsyncResult(id='5f4e3859-5852-407c-aff1-7287c59d1719', app=add)
if id.status == "SUCCESS":
print("任务执行完成")
elif id.failed():
print("执行失败")
elif id.status == "PENDING":
print("任务等待被执行")
elif id.status == "RETRY":
print("任务异步后重试")
elif id.status == "STARTED":
print("任务正在被执行")
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/081b14ec2c4edfbfe49b040086dc7edb.png)