Python轻量级任务调度框架apscheduler的简单使用

论坛 期权论坛     
选择匿名的用户   2021-5-30 02:05   196   0
<h1><strong><em>                                   Python轻量级任务调度框架apscheduler的简单使用</em></strong></h1>
<p><strong><a href="https://apscheduler.readthedocs.io/en/latest/index.html">APScheduler</a>(Advanced Python Scheduler)是一个轻量级的Python定时任务调度框架(Python库)。<br> APScheduler有三个内置的调度系统,其中包括:</strong></p>
<ul><li><strong>cron式调度(可选开始/结束时间)</strong></li><li><strong>基于间隔的执行(以偶数间隔运行作业,也可以选择开始/结束时间)</strong></li><li><strong>一次性延迟执行任务(在指定的日期/时间内运行作业一次)</strong></li></ul>
<h2 id="支持的后端存储作业">支持后端存储任务并灵活调度</h2>
<p><strong>APScheduler可以任意混合和匹配调度系统和作业存储的后端,其中支持后端存储作业包括:</strong></p>
<ul><li><strong>Memory</strong></li><li><strong>SQLAlchemy</strong></li><li><strong>MongoDB</strong></li><li><strong>Redis</strong></li><li><strong>RethinkDB</strong></li><li><strong>ZooKeeper</strong></li><li><strong>sqlite</strong></li></ul>
<p><strong>也就是说该库十分灵活,可以使用后端数据库存储任务,以随时的编排并调度各类任务。</strong></p>
<p> </p>
<h2 id="集成的python框架">集成的Python框架</h2>
<p><strong>APScheduler内继承了几个常见的Python框架:</strong></p>
<ul><li><strong>asyncio</strong></li><li><strong>gevent</strong></li><li><strong>tornado</strong></li><li><strong>qt</strong></li></ul>
<h2><strong>支持以django和flask插件形式集成到Django和flask,当然了,既然都是这两个著名框架的插件了,自然可以使用其自带的开发数据库sqlite进行任务的持久化。也就是上面所提到的后端存储任务作业。</strong></h2>
<p> </p>
<h2 id="各组件简介">各组件简介</h2>
<p> </p>
<h3 id="调度器"><strong>调度器</strong></h3>
<p> </p>
<ul><li><strong>BlockingScheduler : 当调度器是你应用中唯一要运行的东西时。</strong></li><li><strong>BackgroundScheduler : 当你没有运行任何其他框架并希望调度器在你应用的后台执行时使用(充电桩即使用此种方式)。</strong></li><li><strong>AsyncIOScheduler : 当你的程序使用了asyncio(一个异步框架)的时候使用。</strong></li><li><strong>GeventScheduler : 当你的程序使用了gevent(高性能的Python并发框架)的时候使用。</strong></li><li><strong>TornadoScheduler : 当你的程序基于Tornado(一个web框架)的时候使用。</strong></li><li><strong>TwistedScheduler : 当你的程序使用了Twisted(一个异步框架)的时候使用</strong></li><li><strong>QtScheduler : 如果你的应用是一个Qt应用的时候可以使用。</strong></li></ul>
<p><strong><span style="color:#f33b45;">这里需要强调一下,blocking和background是最为常用的两个调度器</span>。</strong></p>
<p> </p>
<h3 id="作业存储器">作业存储器,我喜欢说这个是后端存储任务作业</h3>
<p> </p>
<p><strong>如果你的应用在每次启动的时候都会重新创建作业,那么使用默认的作业存储器(MemoryJobStore)即可,但是如果你需要在调度器重启或者应用程序奔溃的情况下任然保留作业,你应该根据你的应用环境来选择具体的作业存储器。例如:使用Mongo或者SQLAlchemy JobStore (用于支持大多数RDBMS)</strong></p>
<h3 id="执行器">执行器</h3>
<p> </p>
<p><strong>对执行器的选择取决于你使用上面哪些框架,大多数情况下,使用默认的ThreadPoolExecutor已经能够满足需求。如果你的应用涉及到CPU密集型操作,你可以考虑使用ProcessPoolExecutor来使用更多的CPU核心。你也可以同时使用两者,将ProcessPoolExecutor作为第二执行器。</strong></p>
<h3 id="触发器">触发器</h3>
<p> </p>
<p><strong>当你调度作业的时候,你需要为这个作业选择一个触发器,用来描述这个作业何时被触发,APScheduler有三种内置的触发器类型:</strong></p>
<ul><li><strong>date 一次性指定日期</strong></li><li><strong>interval 在某个时间范围内间隔多长时间执行一次</strong></li><li><strong>cron 和Linux crontab格式兼容,最为强大,也就是Linux的crontab写法,也是最为常用的触发器。</strong></li></ul>
<p><strong>那么,任务计划,顾名思义是至少需要任务或者任务集和触发器两者组成。触发器可以是某一个时刻,也可以是在某一个时间段内,也可以像Linux的crontab一样,灵活的指定时间。下面就开始初识apscheduler之旅吧~~~~~~~~!!!!!</strong></p>
<p><strong><span style="color:#f33b45;">在安装之前,我需要废话一句,前面说了这是一个轻量级的框架(库),一般轻量的另一
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP