一、概念:
python定時任務框架,基於日期,固定時間間隔,crontab類型的任務,並且可以持久化任務,並能以deamon守護方式運行任務
二、簡介:
安裝:pip install apscheduler
其中7中調度器:
- BackgroundScheduler:如果希望調度器在后台執行使用
- BlockingScheduler:當調度器是應用唯一要運行的任務時使用
- AsyncIOScheduler:使用asyncio模塊(一個異步框架)一起使用
- GeventScheduler:使用gevent(高新能的python並發框架)作為IO模型,和GeventExecutor配合使用
- TornadoScheduler:使用Tornado(一個web框架)的IO模型,用ioloop.add_timeout 完成定時喚醒
- TwistedScheduler:
- QtScheduler:如果是一個qt應用,需使用QTimer完成定時喚醒
每種調度器中,都有四個組件
觸發器(trigger)觸發器包含調度邏輯,描述一個任務何時被觸發,觸發器內置三種方式。
- date:基礎觸發器,特定的時間點觸發,只執行一次;
- interval:固定時間間隔觸發,可以執行多次;
- cron:在特定時間周期性的觸發,可以執行多次;每次任務執行的間隔時間可以不一樣;
任務/作業存儲(job store)指定了作業被存放的位置
1.默認情況下保存在內存
2.也可以保存在數據庫中,如MySql/MongoDB
3.調度器之間不能共享作業存儲
執行器(executor):執行器是將指定的作業(作業函數)提交到線程池,當任務完成時,執行器通知調度器觸發相應的事件。
1.ProcessPoolExecutor(默認10個)
2.ThreadPoolExecutor(默認10個)
調度器(scheduler):
三、原理
觸發器(trigger),作業存儲(job store),執行器(executor),調度器(scheduler)
四、如何使用
五、實例演示
BlockingScheduler
以阻塞進程的形式,每秒執行一次