色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

Python定時任務APScheduler原理及實例解析

瀏覽:105日期:2022-07-23 18:20:48

定時任務:

1、 線程睡眠函數 sleep() ——粗暴!一直占有 CPU 資源,導致后續操作無法執行

2、 threading.Timer(10, task, ()).start() # (間隔s,任務task, 函參)

3、 import sched

# 初始化 sched 模塊的 scheduler 類scheduler = sched.scheduler(time.time, time.sleep)# 增加調度任務 enter(delay, priority, action, argument=(), kwargs={})scheduler.enter(10, 1, task) # 運行任務scheduler.run()

scheduler 中的每個調度任務只會工作一次,不會無限循環被調用。如果想重復執行同一任務, 需要重復添加調度任務即可。

enter(delay, priority, action, argument=(), kwargs={}) 間隔執行任務。delay單位是秒。priority越小優先級越大。兩個任務指定相同的延遲時間,優先級大的任務會向被執行。action 即需要執行的函數,argument 和 kwargs 分別是函數的位置和關鍵字參數。 scheduler.enterabs(time, priority, action, argument=(), kwargs={}) 時間點執行任務。因此,time是絕對時間.其他參數用法與 enter() 中的參數用法是一致。

APScheduler——Advanced Python Scheduler。

一個輕量級的 Python 定時任務調度框架。APScheduler 支持三種調度任務:固定時間間隔,固定時間點(日期),Linux下Crontab 命令。同時,它還支持異步執行、后臺執行調度任務。

import datetimeimport timefrom apscheduler.schedulers.background import BackgroundSchedulerdef timedTask(): print(datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3])if __name__ == ’__main__’: # 1.創建后臺執行的 schedulers scheduler = BackgroundScheduler() # 2.添加調度任務,調度方法為 timedTask,觸發器選擇 interval(間隔性),間隔時長為 2 秒 job = scheduler.add_job(timedTask, ’interval’, seconds=2) # 3.啟動調度任務 scheduler.start() while True: print(time.time()) time.sleep(5)

基礎組件

schedulers(調度器)它是任務調度器,屬于控制器角色。它配置作業存儲器和執行器可以在調度器中完成,例如添加、修改和移除作業。 BlockingScheduler : 調度器在當前進程的主線程中運行,也就是會阻塞當前線程。 BackgroundScheduler : 調度器在后臺線程中運行,不會阻塞當前線程。 AsyncIOScheduler : 結合 asyncio 模塊(一個異步框架)一起使用。 GeventScheduler : 程序中使用 gevent(高性能的Python并發框架)作為IO模型,和 GeventExecutor 配合使用。 TornadoScheduler : 程序中使用 Tornado(一個web框架)的IO模型,用 ioloop.add_timeout 完成定時喚醒。 TwistedScheduler : 配合 TwistedExecutor,用 reactor.callLater 完成定時喚醒。 QtScheduler : 你的應用是一個 Qt 應用,需使用QTimer完成定時喚醒。 triggers(觸發器)描述調度任務被觸發的條件。不過觸發器完全是無狀態的。 date 時間點觸發: scheduler .add_job(job_func, ’date’, run_date=datetime(2017, 12, 13, 14, 0, 0), args=[’text’]) interval 固定時間間隔觸發: scheduler .add_job(job_func, ’interval’, minutes=2, start_date=’2017-12-13 14:00:01’ , end_date=’2017-12-13 14:00:10’) cron 特定時間周期性地觸發: scheduler .add_job(job_func, ’cron’, month=’1-3,7-9’,day=’0, tue’, hour=’0-3’) job stores(作業存儲器)任務持久化倉庫,默認保存任務在內存中,也可將任務保存都各種數據庫中,任務中的數據序列化后保存到持久化數據庫,從數據庫加載后又反序列化。 有兩種添加方法,一是 add_job(), 二是scheduled_job()修飾器來修飾函數。區別是:第一種方法返回一個 apscheduler.job.Job 的實例,可用來改變或移除 job。第二種方法只適用于應用運行期間不會改變的 job。 移除 job 也有兩種方法:remove_job() 和 job.remove()。 remove_job() 是根據 job 的 id 來移除,所以要在 job 創建時指定一個 id。job.remove() 則是對 job 執行 remove 方法即可。 獲取 job 列表:通過 scheduler.get_jobs() 方法能夠獲取當前調度器中的所有 job 的列表。 修改job: 用Job.modify() 或 modify_job()方法來修改 job 的屬性。但注意job 的 id 是無法被修改的。 關閉 job:默認情況下調度器會等待所有正在運行的作業完成后,關閉所有的調度器和作業存儲。如果你不想等待,可以將 wait 選項設置為 False。 更新任務reschedule_job() executors(執行器)負責處理作業的運行,它們通常通過在作業中提交指定的可調用對象到一個線程或進城池來進行。當作業完成時,執行器將會通知調度器。最常用的 executor 有兩種:ProcessPoolExecutor 和 ThreadPoolExecutor

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产最爽的乱淫视频国语对 | 久久精品国产亚洲a | 久草视频首页 | 久久国产精品一区二区三区 | 免费在线国产视频 | 99视频国产在线 | 亚洲一区天堂 | 亚洲精品不卡在线 | 国产cao| 成年免费在线观看 | 中文字幕在线观看91 | 久久精品免费观看久久 | 高清国产美女一级a毛片录 高清国产亚洲va精品 | 香蕉久久a毛片 | 在线观看国产情趣免费视频 | 久久国产一区二区三区 | 国产毛片久久久久久国产毛片 | 在线观看香蕉免费啪在线观看 | 在线精品日韩一区二区三区 | 午夜性爽视频男人的天堂在线 | 国产福利在线91 | 国产在线精品一区免费香蕉 | 日本人的色道免费网站 | 亚洲精品国产美女在线观看 | 欧美日韩高清不卡一区二区三区 | 韩国一级永久免费观看网址 | 欧美日韩永久久一区二区三区 | 国产一区亚洲二区 | 久久精品国产精品亚洲精品 | 日本美女福利视频 | 最新最好看免费毛片基地 | 天天综合天天看夜夜添狠狠玩 | 白白在线观看永久免费视频 | 成年免费网站 | 欧美亚洲在线 | 国产人成亚洲第一网站在线播放 | 国产高清免费视频 | 一级待一黄aaa大片在线还看 | 91亚洲精品一区二区福利 | 亚洲国产日韩成人综合天堂 | 欧美人成a视频www |