python自动化测试中APScheduler Flask的应用示例

  • 更新时间:2023-01-18 10:47:17
  • 编辑:郭良材

使用背景

实际项目中,需要验证打点数据在各个系统中收集是否一致,而部分节点打点数据收集是通过异步任务实现的,等待时间比较久。为应对业务异步操作处理,实现异步数据的收集,经过调研后,选择了 APScheduler 框架。

什么是 APScheduler 框架?

APScheduler 是基于 Quartz(一个功能丰富的开源任务调度系统) 的一个 Python 定时任务框架,使用起来简单且方便,提供了基于日期、固定时间间隔以及 crontab 类型的任务,并且可以持久化任务,基于这些功能可以快速实现 python 的定时轮询任务系统。

使用 APScheduler 框架,可以通过 pip 安装

pip install apscheduler

APScheduler 框架包含四个组成部分

触发器 (trigger)触发器包含调度逻辑,每一个作业有它自己的触发器,用于决定接下来哪一个作业会运行;除了他们自己初始的配置,触发器本身是无状态的。

作业存储 (job store)作业存储存储被调度的作业,默认的作业存储是简单的将作业保存到内存中,如果选择其他方式也可以将作业保存到数据库中;一个作业数据的保存将会在持久化作业存储的时候被序列化,然后在加载时被反序列化;调度器无法分享同一个作业存储。

执行器 (executor)执行器处理作业的运行,一般通过在作业中提交制定好的可调用对象到一个线程中或者线程池中来执行;在作业完成时,执行器会去通知调度器。

调度器 (scheduler)调度器是 APScheduler 的核心,所有相关的组件都要通过它来定义,已配置好的任务也是要通过它来调度。

APScheduler 在 flask 中使用

因为 scheduler 任务需要耗费较多时间,因此当在项目中收到 flask 的接口请求后,可以通过线程异步处理耗时任务,先将 “正在处理” 作为接口结果返回,
示例代码结构如下:

编写任务函数,开始 APScheduler 的调度

在通过 flask 接口拿到需要的任务参数后,便可以创建调度任务。在创建调度任务之前,我们需要确定要选择哪一种调度器、job 存储、执行器和触发器,
调度器的选择主要基于编程环境以及 APScheduler 的用途,

这里我们根据需要选择 BackgroundScheduler。

在 job 存储的选择上,需要根据自己的 job 是否需要持久化,因为没有特殊的需求,所以使用默认的内存方式

执行器的选择需要依据 job 的类型,默认的线程池执行器apscheduler.executors.pool.ThreadPoolExecutor 已经可以满足大多数情况。

管理 job 的调度方式需要选择一个合适的触发器,APScheduler 内置三种触发器;

因为我们的自动化需要对各个子环节进行验证,当上一个环节成功后才能进行下一个环节的验证,因此选择 apscheduler.triggers.interval,以固定的时间间隔运行 job。

部分项目代码

periodic_task 是项目中的任务调度函数;首先实例化了一个 BackgroundScheduler 调度器,接着向调度器添加 job,添加的 job 为 data_task 函数,同时定义了 job 的触发器,指定固定的时间间隔为 58 秒。

其中 data_task 描述了具体的 job 细节,即分别判断当前不同的任务节点执行相应的验证过程,并将每一步的验证状态记录到数据库中,这样在下一次执行 data_task 时,就可以去校验新的环节;

启动调度器使用 start 函数,结束调度器使用 shutdown 函数;

shutdown 函数可以指定停止条件,在本项目中,因为步骤比较多,一旦有环节出错,就需要结束任务,保存已验证的环节,因此在拿到任务结果时,不论是整个验证成功的结果,还是某个环节出错的结果,都会停止本次调度,结束掉本次验证。

总结

  • APScheduler 在 flask 中使用需要用到线程池异步去处理耗时任务;
  • 使用 APScheduler 需要配置好合适的调度器、job 存储、执行器和触发器;
  • 在业务中验证复杂连续的步骤可以使用轮询的方式,并设置好任务结束的条件,不仅可以校验每一步的验证结果而且有环节出错也不影响整个流程。

以上就是python自动化测试中APScheduler Flask的应用示例的详细内容,更多关于python自动化测试APScheduler Flask的资料请关注码农之家其它相关文章!

相关教程

  • python自动化脚本安装指定版本环境的方法总结

    这篇文章主要为大家详细介绍了python自动化脚本安装指定版本python环境的相关方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    发布时间:2019-10-24

  • 《Python Linux系统管理与自动化运维》学习总结

    1. 1秒钟启动一个下载服务器 在要访问文件的目录下执行:python3 -m http.server 在网页上访问:http://ip:8000/ 就可以下载该目录下的文件(windows中也可以用) 2. python 一行试解析json echo {job: developer, name: lmx, sex: male} | python -m json.tool cat 1.txt | python -m json.tool (1.txt中是json类型的数据) 3.检查第三方库是否正确安装 如

    发布时间:2018-12-01

  • 《Python Linux系统管理与自动化运维》Ansible详解(一)

    这是一篇关于《Python Linux系统管理与自动化运维》学习后的关于Ansible知识点的详解内容,主要介绍了Ansible维护模式通常由控制机和被管理机组成。有兴趣的朋友们可以参考下。

    发布时间:2018-12-01

  • python3 selenium自动化 下拉框定位的例子

    python3 selenium自动化 下拉框定位的例子

    给大家整理一篇关于python3的教程,今天小编就为大家分享一篇python3 selenium自动化 下拉框定位的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    发布时间:2022-10-26

  • 实用自动化运维Python脚本分享

    给网友朋友们带来一篇关于Python的教程,这篇文章主要介绍了关于实用自动化运维Python脚本分享,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

    发布时间:2022-07-06

  • Python+Selenium使用Page Object实现页面自动化测试

    这篇文章主要介绍了Python+Selenium使用Page Object实现页面自动化测试,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习

    发布时间:2021-04-24

  • Python办公自动化SFTP详解

    Python办公自动化SFTP详解

    为网友们分享了关于Python的教程,这篇文章主要介绍了Python办公自动化SFTP详解,sftp和ftp的区别在安全通道,使用的协议,链接方式,安全性等方面都有不同,更多相关内容需要的小伙伴可以参考一下

    发布时间:2022-09-12

  • selenium+python自动化测试环境搭建步骤

    这篇文章主要介绍了selenium+python自动化测试之环境搭建,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    发布时间:2020-04-12

  • 《从零开始学Selenium自动化测试(基于Python 视频教学版)》配书资源

    《从零开始学Selenium自动化测试(基于Python 视频教学版)》配书资源

    本书基于Python语言,系统介绍了Selenium3自动化测试的相关知识体系和应用。书中大部分知识点都配有相应的案例,方便读者练习。本书每章案例清晰易懂,可以独立运行,方便不同需求的读者学习。此外,作者还专门为本书录制了约10个小时的基本操作视频,帮助读者做到高效、直观地学习。相信通过对本书内容的系统学习,读者可以全面掌握Selenium自动化测试技巧。这本书由13章组成,涵盖了自动测试的基本知识、硒简介、环境部署、硒化镉、元素定位

    大小:1.1 MBSelenium配套资源

  • 《Python自动化测试入门与进阶实战》源代码

    《Python自动化测试入门与进阶实战》源代码

    《 Python自动化测试入门与进阶实战 》从Python自动化测试的概念讲起,逐步深入自动化测试的进阶知识,最后通过两个复杂的项目案例,重点介绍如何使用unittest+Requests+Selenium进行RESTful API和跨终端自动化测试。本书共10章,涵盖的内容有自动化测试思想;Python HTTP接口编程;Selenium基础知识;Mock模块的使用;通过Python进行爬虫测试;性能测试和压测工具实战;多线程压力测试;基于Appium的移动端测试;基于pytest的单元测试;通过编写代

    大小:126 MBPython配套资源

  • Python接口自动化测试

    Python接口自动化测试

    正确引导测试工程师攻破Python新手入门难题 出示可落地式的HTTP协议书插口自动化技术脚本制作、切切实实的可软件环境 有着《Python接口自动化测试》,就有着全套的源代码,依照这书的自然

    大小:61.2 MBPython自动化

  • 对比Excel,轻松学习Python报表自动化

    对比Excel,轻松学习Python报表自动化

    编辑推荐 入门级数据分析师系列前两本书《对比Excel,轻松学习Python 数据分析》和《对比Excel,轻松学习SQL 数据分析》深受读者欢迎,截至2021年8月,累计销量近15万册。这本书《对比Excel,轻松学习Python 报表自动化》继承了比较学习的特点,帮助职场新人使用Python实现报表自动化,大大提高工作效率。 内容简介 这本书《对比Excel,轻松学习Python 报表自动化》继承了比较学习的特点全书围绕Excel功能区的各个模块展开通过对比Excel很容易详细说明如何在

    大小:46.1 MBPython自动化

用户留言