测试平台系列(72) 了解ApScheduler基本用法

大家好~我是米洛

我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持。

欢迎关注我的龚仲耗测试开发坑货,获取最新文章教程!

回顾

上一节我们调研了一下市面上的定时任务方案,最终确定为APScheduler,但据说在uvicorn下还有一些坑。

没关系,笔者也是在摸索阶段。如果有遇到问题,解决了也可以给大家参考。

这篇主要给大家介绍一下APScheduler的基本信息和使用方法。

四个名词

官网讲的很详细
  • 触发器: 定时任务什么时候触发
  • 工作商店: 定时任务存在哪里,内存?MySQL?Redis?
  • 执行器: 执行任务的程序
  • 调度程序: 不同任务之间的调度管理程序,还包括任务的添加和修改等

存储介质

上一节我们提到了定时任务持久化。

那么在APScheduler中支持哪些存储介质呢?看一张图:

图中很详细

可以看到,它支持多种介质,包括我们最不愿意用的memory(内存)。因为如果服务重启,数据就都没了,所以我们不考虑使用这个。

  • SQLAlchemy

    这是我们常用的方法,通过它可以写入到mysql,在不引入其他组件的情况下完全可以考虑。

  • MongoDB

    NoSQL的一种,比较方便,我们秉着不额外增加组件的信念,暂不考虑。

  • Redis

    redis后续我们自身服务也需要用到,但把它作为一个"数据库"来使用,还得考虑redis备份等情况,当然优点就是会比mysql更快。

    至于其他的zk,rethinkdb,由于我们暂时也不会引用,所以不分析了。

    综合而言,还是用SQLAlchemy代价最小,成本最低。

运行模式

在运行demo的过程中,发现APScheduler很强大,可以支持各种并发模式。

采用谷歌翻译 翻译了一下,现在的翻译软件都很好用了

由于我们是异步Asycio,所以我们选择第三种执行器。其他的包括Gevent等也是Flask/Django等框架的好选择。

了解基本API

  • 配置scheduler
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
from apscheduler.schedulers.asyncio import AsyncIOScheduler

# 选择job存储介质为sqlalchemy
job_store = {
    'default': SQLAlchemyJobStore(url=Config.SQLALCHEMY_DATABASE_URI)
}
# 选择调度程序为AsyncIOScheduler
scheduler = AsyncIOScheduler()
# 配置好对应的程序
scheduler.configure(jobstores=job_store)
# 启动
scheduler.start()
  • 添加job
# 把方法: myfunc添加到定时任务,每2分钟执行一次
scheduler.add_job(myfunc, 'interval', minutes=2, id='my_job_id')

与pity结合

在FastApi中,有个startup的钩子方法,意味着当服务启动的时候会自动执行该方法。我们来看看怎么用的:

image

@pity.on_event意思是监听事件,后面的参数: "startup"代表pity服务启动。

也就是说,当pity启动的时候,则初始化Scheduler。

这里我封装了一个Scheduler类,后面会给大家介绍里面的具体方法。

下一节我们编写测试计划相关接口,并与APScheduler结合起来,完成一整套定时任务功能。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容