python 定时任务调度,python定时任务 每天运行一次
昨晚凌晨两点,边肖接到了女神的电话,她兴高采烈。没想到电话里女神流着泪告诉我,老板让她现在去公司加班。我很好奇问她这么晚了要做什么。女神抱怨道,“因为我们公司这个产品是针对美国用户的,所以有时差。”然后她又开始哭了。唉,边肖以为她终于有机会在女神面前摊牌了。慢慢听我说。
在开发自动化测试平台时,其中一个功能是必不可少的,那就是预定任务调度。现在举个例子,你的项目需要凌晨2点测试,你真的不可能在一个感人的夏天凌晨2点起床跑到公司去执行测试。这个时候计时任务就显得尤为重要,可以说是一个测试平台的标准。
用Python实现定时任务的技术手段有很多,现在市面上主流的方式有四种。列一个简单的清单:
Linux系统级的Crontab。
Python的调度库。
芹菜定时任务。
Python的程序库。
以上四种方式都可以实现定时任务,我研究了实现定时任务的四种技术。下面给大家介绍一下如何选择。
一、Linux系统的crontab:
Linux系统的crontab非常好用,指定的系统指令或者shell脚本脚本都是固定间隔执行的。时间间隔的单位可以是分钟、小时、天、月、周及以上的任意组合。该命令非常适合定期日志分析或数据备份。但是他有一件坏事。如果我们的项目比较复杂,涉及多台服务器,修改某个任务调度的策略会很麻烦。所以用一句话总结crontab就是:crontab虽然好,但是不要贪服务器~
二、Python的时间表库:
调度库是一个轻量级的任务调度方案。优点是好用,可以直接使用,基本不需要任何配置。缺点是因为它是轻量级的,所以功能有限,比如不能动态添加任务和持久化任务的结果。下面简单介绍一下:
安装:
基本用途:
通过阅读代码,您可以发现schedule非常简单,使用方便。对于不需要动态添加任务或存储任务的调度任务,直接通过schedule实现。简单高效!
三。芹菜库:
芹菜以异步任务和定时任务闻名。性能稳定,功能强大,在大中型项目中发挥着重要作用。但是芹菜不能动态添加任务(Django里有相应的插件可以实现动态任务)。而且对于之前没有使用过芹菜的项目来说,仅仅因为定时任务而设置一套芹菜系统似乎有点大材小用,因为设置芹菜要配备一个经纪人,通常是Redis或者RabbitMQ,所以重量级,浪费资源。
安装:简单实用:下面简单看一下如何用芹菜添加定时任务:
为了执行celery的调度任务,我们需要打开两个终端,一个用于监控调度任务,另一个用于执行调度任务。这些命令如下所示:
四。APScheduler库:
APScheduler库对个人来说相对容易使用。它不仅使用简单,而且功能强大,如动态添加和删除任务,以及持久性。持久化有很多选项,比如memory、MongoDB、SQLAlchemy、Redis等。它还接口了一些常用的框架,比如asyncio scheduler和gevent scheduler。接下来,我们聊聊天。
安装:
简单实用:
这里我们使用默认的调度程序BlockingScheduler来执行一个调度任务:
如您所见,该任务使用起来非常简单。它有schduler.add_job函数,可以动态添加任务,操作非常方便。还有BackgroundScheduler、AsyncIOScheduler等。女神听了我的话,终于破涕为笑,她一直夸我有才华。哈哈,还好自动化测试学的不错,终于离女神更近了一步!
边肖真的为她的爱情事业感到骄傲。学好自动化,让你轻松搞定女神!
时机很常见,所以选择方案尤为重要。今天因为篇幅有限,只对几个计时库做一个通俗的介绍。想了解具体某个库,可以在评论区留言,我可以说说某个库的发展。
另外,个人认为APScheduler是我比较满意的解决方案。它使用简单,重量轻,功能强大。所以我在我的测试平台上,用APScheduler的解决方案来解决。如果您还想了解API自动化测试平台开发,请花点时间了解:
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。