真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python定時任務(wù)框架APScheduler基礎(chǔ)知識有哪些

這篇文章給大家介紹Python定時任務(wù)框架APScheduler基礎(chǔ)知識有哪些,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供前鋒網(wǎng)站建設(shè)、前鋒做網(wǎng)站、前鋒網(wǎng)站設(shè)計、前鋒網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、前鋒企業(yè)網(wǎng)站模板建站服務(wù),10年前鋒做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

Python定時任務(wù)框架APScheduler基礎(chǔ)知識分享,APScheduler十分方便,課基于日期、固定時間間隔以及crontab類型任務(wù)在主程序的運行過程中快速增加新作業(yè)或刪除舊作業(yè),若把作業(yè)存儲在數(shù)據(jù)庫中作業(yè)的狀態(tài)會被保存,當調(diào)度器重啟時不必重新添加作業(yè),作業(yè)會恢復原狀態(tài)繼續(xù)執(zhí)行。

一、定時任務(wù)框架APScheduler是什么?

在實際開發(fā)中會碰到重復性或周期性的任務(wù),如每天定時爬取某個網(wǎng)站的數(shù)據(jù)、一定周期定時運行代碼訓練模型等,類似這類的任務(wù)通常需要手動來進行設(shè)定或調(diào)度,以便其能夠在設(shè)定好的時間內(nèi)運行。

在Windows上可以通過計劃任務(wù)來手動實現(xiàn),而在Linux系統(tǒng)上往往會用到更多關(guān)于 crontab 的相關(guān)操作。但手動管理并不是一個很好的選擇,如果需要有十幾個不同的定時任務(wù)需要管理,每次通過人工來進行干預(yù)有些笨拙,這時候就真的是“人工智能”了。

將這些定時任務(wù)的調(diào)度代碼化才能夠從這種手動管理的純?nèi)肆Σ僮髦薪饷摮鰜?。在Python 生態(tài)中對于定時任務(wù)的一些操作:

1、schedule:第三方模塊,該模塊適合比較輕量級的一些調(diào)度任務(wù),但卻不適用于復雜時間的調(diào)度

2、APScheduler:第三方定時任務(wù)框架,是對Java第三方定時任務(wù)框架 Quartz 的模仿與移植,能提供比 schedule 更復雜的應(yīng)用場景,并且各種組件都是模塊化,易于使用與二次開發(fā)。

3、Celery Beat:屬于 celery 這分布式任務(wù)隊列第三方庫下的一個定時任務(wù)組件,如果使用需要配合 RabbitMQ 或 redis 這類的消息隊列套件,需要花費一定的時間在環(huán)境搭建上,但在高版本中已經(jīng)不支持 Windows。

為了滿足能夠相對復雜的時間條件,又不需要在前期的環(huán)境搭建上花費很多時間的前提下,選擇 APScheduler 來對調(diào)度任務(wù)或定時任務(wù)進行管理是個性價比極高的選擇。

二、APScheduler 概念與組件

這一框架的簡單易用。在使用 APScheduler 之前,需要對這個框架的一些概念簡單了解,主要有那么以下幾個:觸發(fā)器、任務(wù)持久化、執(zhí)行器、調(diào)度器。

(一)觸發(fā)器(trigger)

觸發(fā)器用以觸發(fā)定時任務(wù)的組件,在 APScheduler 中主要是指時間觸發(fā)器,并且主要有三類時間觸發(fā)器可供使用:

date:日期觸發(fā)器。日期觸發(fā)器主要是在某一日期時間點上運行任務(wù)時調(diào)用,是 APScheduler 里面最簡單的一種觸發(fā)器。通常也適用于一次性的任務(wù)或作業(yè)調(diào)度。

interval:間隔觸發(fā)器。間隔觸發(fā)器是在日期觸發(fā)器基礎(chǔ)上擴展了對時間部分,如時、分、秒、天、周這幾個部分的設(shè)定。用以對重復性任務(wù)進行設(shè)定或調(diào)度的一個常用調(diào)度器。設(shè)定了時間部分之后,從起始日期開始會按照設(shè)定的時間去執(zhí)行任務(wù)。

cron:cron 表達式觸發(fā)器。cron 表達式觸發(fā)器就等價于 Linux 上的 crontab,它主要用于更復雜的日期時間進行設(shè)定。但需要注意的是APScheduler 不支持 6 位及以上的 cron 表達式最多只支持到5位。

(二)、任務(wù)持久化(job stores)

任務(wù)持久化主要是用于將設(shè)定好的調(diào)度任務(wù)進行存儲,即便是程序因為意外情況,如斷電、電腦或服務(wù)器重啟時,只要重新運行程序時APScheduler 就會根據(jù)對存儲好的調(diào)度任務(wù)結(jié)果進行判斷,如果出現(xiàn)已經(jīng)過期但未執(zhí)行的情況會進行相應(yīng)的操作。APScheduler為提供了多種持久化任務(wù)的途徑,默認是使用 memory 也就是內(nèi)存的形式,但內(nèi)存并不是持久化最好的方式。最好的方式則是通過像數(shù)據(jù)庫這樣的載體來將定時任務(wù)寫入到磁盤當中,只要磁盤沒有損壞就能將數(shù)據(jù)給恢復。APScheduler支持的且常用的數(shù)據(jù)庫主要有:

sqlalchemy 形式的數(shù)據(jù)庫,這里就主要是指各種傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,如MySQL、PostgreSQL、SQLite 等。

MongoDB 非結(jié)構(gòu)化的 Mongodb 數(shù)據(jù)庫,該類型數(shù)據(jù)庫經(jīng)常用于對非結(jié)構(gòu)化或版結(jié)構(gòu)化數(shù)據(jù)的存儲或操作,如 JSON。

redis 內(nèi)存數(shù)據(jù)庫,通常用作數(shù)據(jù)緩存來使用,當然通過一些主從復制等方式也能實現(xiàn)當中數(shù)據(jù)的持久化或保存。

通??梢栽趧?chuàng)建 Scheduler 實例時創(chuàng)建,或是單獨為任務(wù)指定。配置的方式相對簡單,只需要指定對應(yīng)的數(shù)據(jù)庫鏈接即可。

(三)執(zhí)行器(executor)

執(zhí)行器顧名思義就是執(zhí)行任務(wù)的對象,在計算機內(nèi)通常要么是 CPU 調(diào)度任務(wù),要么是單獨維護一個線程來運行任務(wù)。所以 APScheduler 里的執(zhí)行器通常就是 ThreadPoolExecutor 或 ProcessPoolExecutor 這樣的線程池和進程池兩種。當然如果是和協(xié)程或異步相關(guān)的任務(wù)調(diào)度,還可以使用對應(yīng)的 AsyncIOExecutor、TwistedExecutor 和 GeventExecutor 三種執(zhí)行器。

(四)調(diào)度器(scheduler)

調(diào)度器的選擇主要取決于你當前的程序環(huán)境以及 APScheduler 的用途。根據(jù)用途的不同,APScheduler 又提供了以下幾種調(diào)度器:

BlockingScheduler:阻塞調(diào)度器,當程序中沒有任何存在主進程之中運行東西時,就則使用該調(diào)度器。

BackgroundScheduler:后臺調(diào)度器,在不使用后面任何的調(diào)度器且希望在應(yīng)用程序內(nèi)部運行時的后臺啟動時才進行使用,如當前你已經(jīng)開啟了一個Django 或 Flask 服務(wù)。

AsyncIOScheduler:AsyncIO 調(diào)度器,如果代碼是通過 asyncio 模塊進行異步操作,使用該調(diào)度器。

GeventScheduler:Gevent 調(diào)度器,如果代碼是通過 gevent 模塊進行協(xié)程操作,使用該調(diào)度器

TornadoScheduler:Tornado 調(diào)度器,在 Tornado 框架中使用

TwistedScheduler:Twisted 調(diào)度器,在基于 Twisted 的框架或應(yīng)用程序中使用

QtScheduler:Qt 調(diào)度器,在構(gòu)建 Qt 應(yīng)用中進行使用。

通常情況下如果不是和 Web 項目或應(yīng)用集成共存,那么往往都首選 BlockingScheduler 調(diào)度器來進行操作,它會在當前進程中啟動相應(yīng)的線程來進行任務(wù)調(diào)度與處理;反之,如果是和 Web 項目或應(yīng)用共存,那么需要選擇 BackgroundScheduler 調(diào)度器,因為它不會干擾當前應(yīng)用的線程或進程狀況。基于對以上的概念和組件認識,就能基本上摸清 APScheduler 的運行流程:

1、設(shè)定調(diào)度器用以對任務(wù)的調(diào)度與安排進行全局統(tǒng)籌

2、對相應(yīng)的函數(shù)或方法上設(shè)定相應(yīng)的觸發(fā)器,并添加到調(diào)度器中

3、如有任務(wù)持久化需要則需要設(shè)定對應(yīng)的持久化層,否則默認使用內(nèi)存存儲任務(wù)

4、當觸發(fā)器被觸發(fā)時,就將任務(wù)交由執(zhí)行器進行執(zhí)行

關(guān)于Python定時任務(wù)框架APScheduler基礎(chǔ)知識有哪些就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


名稱欄目:Python定時任務(wù)框架APScheduler基礎(chǔ)知識有哪些
文章網(wǎng)址:http://weahome.cn/article/gohcod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部