Python定時庫Apscheduler的簡單使用
在Python中需要執行定時任務,可以使用Apscheduler。
Apscheduler是基於Quartz的Python定時任務框架,功能上跟Quartz一致,使用上跟Quartz也幾乎一致。
核心的四個部分:
①觸發器(trigger)、②作業存儲(job store)、③執行器(executor)、④調度器(scheduler)
安裝依賴:
pip install apscheduler
間隔時間調度:
from apscheduler.schedulers.blocking import BlockingScheduler from datetime import datetime sched = BlockingScheduler() def test_job(): print(f'{datetime.now():%H:%M:%S} Test job') if __name__ == '__main__': sched.add_job(test_job, 'interval', id='test', seconds=5) sched.start()
也可以使用裝飾器:
from apscheduler.schedulers.blocking import BlockingScheduler from datetime import datetime sched = BlockingScheduler() def test_job(): print(f'{datetime.now():%H:%M:%S} Test job') @sched.scheduled_job('interval', seconds=5) def test_decorator_job(): print(f'{datetime.now():%H:%M:%S} Test decorator job') if __name__ == '__main__': sched.add_job(test_job, 'interval', id='test', seconds=5) sched.start()
運行結果:
BlockingScheduler()是調度器中的一種調度器
sched.add_job()是添加作業
sched.start()是開始任務
定時調度:
定時調度使用cron表達式進行,這裡也帶參數執行:
from apscheduler.schedulers.blocking import BlockingScheduler from datetime import datetime scheduler = BlockingScheduler() def test_args(x): print (f'{datetime.now():%H:%M:%S} Test cron job', x) if __name__ == '__main__': scheduler.add_job(test_args, 'cron', args=('cron test',), second='*/5') scheduler.start()
時間參數設置如下:
year (int|str) – 年,4位數字 month (int|str) – 月 (范圍1-12) day (int|str) – 日 (范圍1-31) week (int|str) – 周 (范圍1-53) day_of_week (int|str) – 周內第幾天或者星期幾 (范圍0-6 或者 mon,tue,wed,thu,fri,sat,sun) hour (int|str) – 時 (范圍0-23) minute (int|str) – 分 (范圍0-59) second (int|str) – 秒 (范圍0-59) start_date (datetime|str) – 最早開始日期(包含) end_date (datetime|str) – 最晚結束時間(包含) timezone (datetime.tzinfo|str) – 指定時區
接下來說一下其中的調度器:
BlockingScheduler:適用於調度程序是進程中唯一運行的進程,調用start函數會阻塞當前線程,不能立即返回。 BackgroundScheduler:適用於調度程序在應用程序的後臺運行,調用start後主線程不會阻塞。 AsyncIOScheduler:適用於使用瞭asyncio模塊的應用程序。 GeventScheduler:適用於使用gevent模塊的應用程序。 TwistedScheduler:適用於構建Twisted的應用程序。 QtScheduler:適用於構建Qt的應用程序。
其中使用得比較多的是前三種調度器。
刪除任務:
scheduler.remove_job(‘task_id’)
停止任務:
scheduler.pause_job(‘task_id’)
恢復任務:
scheduler.resume_job(‘task_id’)
立即執行任務next_run_time:
scheduler.add_job( test_job, 'interval', minutes=5, next_run_time=datetime.datetime.now() )
到此這篇關於Python定時庫Apscheduler的簡單使用的文章就介紹到這瞭,更多相關Python定時庫Apscheduler使用內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 詳解Python利用APScheduler框架實現定時任務
- python中BackgroundScheduler和BlockingScheduler的區別
- python定時任務apscheduler的詳細使用教程
- 詳解APScheduler如何設置任務不並發
- python自動化測試中APScheduler Flask的應用示例