最近在搭建python测开平台新get的一个知识点,celery的使用,在此记录一下
1. 安装环境 pip install celer
pip install celery
2. 认识一下celery
(1) 简介:
Celery是使用python编写的分布式任务调度框架,在我们日常web应用中,请求一个后端接口就是等待该接口的业务完成后再返回,如果接口执行的任务很耗时,就会造成服务阻塞甚至请求超时,而前端又需要及时地给出响应,那么这种情况,就可以将耗时的任务交给异步队列服务器去处理
(2) 认识一下几个概念:
celery应用:简单一句话就是:用来定义要执行的任务。举个例子,测开平台,我们写的接口测试用例会根据模块分组,然后添加到一个执行任务里面。
broker:可以理解为存放任务数据的队列,它支持消息队列(rabbitmq, zk)、还有一个缓存reids,也就是执行的任务数据放到队列或者缓存
worker:监听到broker有任务就拿出来执行,消费者
backend: 存放任务执行后的结果,可以放在数据库中
celery beat: 这是一个定时任务,每天把任务加入到一个测试计划中,周期性的执行接口测试用例
上python脚本看效果:
(1) 创建一个测试py文件,task.py
导入Celery的模块:
from celery import Celery
实例化一个应用
app = Celery('my_task', broker='redis://:[email protected]:6379/1',backend='redis://:[email protected]:6379/2')
windows版本的链接:Windows版本redis下载
在定义一个异步任务:
@app.task
def add(x, y):
"""
定义一个异步任务
"""
time.sleep(3)
print(x + y)
简单的准备工作已准备好,接下来开始异步调用该add方法:
异步调用最后会返回一个异步对象,这个可以放在数据库中,注意: 这里只是放入redis中
进入本地redis看数据:
最后我们在执行一下任务: celery -A task worker -l info -P eventlet
收到任务, 在去执行add方法, 由于异步结果也是在redis中,我们再去看看redis idnex=2中的结果
最后我在去结合到django中使用 再来分享
标签:异步,Celery,redis,celery,任务,执行 From: https://www.cnblogs.com/houlian/p/17674160.html