日本电影一区二区_日本va欧美va精品发布_日本黄h兄妹h动漫一区二区三区_日本欧美黄色

Python開源任務(wù)調(diào)度管理項目的分析和對比(python 任務(wù) 調(diào)度 管理)

任務(wù)背景:

 

上個月領(lǐng)導(dǎo)給我一個模型工程化專項工作,大體內(nèi)容就是,把模型團(tuán)隊交付的項目代碼,部署到應(yīng)用環(huán)境中,跑出來的結(jié)果供系統(tǒng)使用。這也是我最近一直在忙著做的一個事情,天天加班到8、9點。

 

不過,這并不是一個從0到1的工作,之前最開始是采用的Django框架搭建起一個服務(wù),使用apscheduler 做任務(wù)管理,但是沒有可視化的監(jiān)控和預(yù)警。

 

任務(wù)需求:

 

在實際生產(chǎn)中,因為業(yè)務(wù)系統(tǒng)是一個基本投資收益分析的系統(tǒng),對于基金來說,多數(shù)的數(shù)據(jù)分析都是基于季報來的,所以模型運行在一定程度上運行頻率并不高。

 

模型的運行任務(wù)大體的分為三塊,

 

  1. 數(shù)據(jù)準(zhǔn)備,檢查數(shù)據(jù)是否已經(jīng)下發(fā),模型運行的前置要求
  2. 模型運行,檢查模型是否運行完成,中間是否有報錯
  3. 模型結(jié)果,檢查目標(biāo)結(jié)果表是否有模型跑出來的結(jié)果

這三步是具有依賴關(guān)系,后者的運行依賴前者運行完成。

 

理想目標(biāo):

 

在Java中有很多開源的任務(wù)管理項目,比如說國產(chǎn)的xxl-job。

 

地址:https://www.xuxueli.com/xxl-job/ 但是呢,模型相關(guān)的內(nèi)容基本都是Python交付的,偶然還有matlab,所以期望能找到一個開源的Python任務(wù)管理調(diào)度項目

 

開源尋找:

 

1.Airflow

 

地址:https://github.com/apache/airflow

 

Airflow 是一個使用 Python 語言編寫的 data pipeline 調(diào)度和監(jiān)控工作流的平臺。Airflow 是通過 DAG(Directed acyclic graph 有向無環(huán)圖)來管理任務(wù)流程的任務(wù)調(diào)度工具, 不需要知道業(yè)務(wù)數(shù)據(jù)的具體內(nèi)容,設(shè)置任務(wù)的依賴關(guān)系即可實現(xiàn)任務(wù)調(diào)度。

 

這個平臺擁有和 Hive、Presto、MySQL、HDFS、Postgres 等數(shù)據(jù)源之間交互的能力,并且提供了鉤子(hook)使其擁有很好的擴展性。除了一個命令行界面,該工具還提供了一個基于 Web 的用戶界面可以可視化管道的依賴關(guān)系、監(jiān)控進(jìn)度、觸發(fā)任務(wù)等。

Python開源任務(wù)調(diào)度管理項目的分析和對比(python 任務(wù) 調(diào)度 管理)

airflow架構(gòu)圖

Python開源任務(wù)調(diào)度管理項目的分析和對比(python 任務(wù) 調(diào)度 管理)

airflow可視化管理頁面

 

總結(jié):

 

這么看Airflow是一個很好的解決方案,但是呢,有一個比較尷尬的問題是,Airflow的運行是依賴Linux系統(tǒng)的,可是由于歷史原因公司現(xiàn)在的生產(chǎn)上模型是運行在window server環(huán)境中,一個巨大的尷尬寫在臉上,這么好用的工具因為客觀限制無法使用。

 

2.Django Celery Flower

 

地址: https://github.com/celery/celery/

 

Celery 是一個簡單、靈活且可靠的分布式系統(tǒng),用于處理大量消息,同時為操作提供維護(hù)此類系統(tǒng)所需的工具。它是一個專注于實時處理的任務(wù)隊列,同時也支持任務(wù)調(diào)度。

 

Celery本身不含消息服務(wù),它使用第三方消息服務(wù)來傳遞任務(wù),目前,Celery支持的消息服務(wù)有RabbitMQ、Redis甚至是數(shù)據(jù)庫,當(dāng)然Redis應(yīng)該是最佳選擇。

 

不像是Airflow,Celery本身也沒有可視化頁面管理,不過有相配套的可視化管理工具——Flower,地址:https://github.com/mher/flower

 

Flower 是一個基于 Web 的工具,用于監(jiān)控和管理 Celery 集群。

 

Flower 具有以下重要的特性:

 

  • 任務(wù)進(jìn)度和歷史
  • 能夠顯示任務(wù)詳細(xì)信息(參數(shù)、開始時間、運行時間等)
  • 圖表和統(tǒng)計

Python開源任務(wù)調(diào)度管理項目的分析和對比(python 任務(wù) 調(diào)度 管理)

Flower 管理頁面

 

總結(jié):

 

Celery是一個很好的任務(wù)調(diào)度框架,正如它說的那樣,支持大量消息,可以支持到百萬級別的量級。但是它用起來的還需要配置消息隊列,redis或者mq,使用起來配置比較多,而且需要三方插件的支持。也是解決目前問題的一種方式,不過有種高射炮打蚊子的感覺,后面維護(hù)也很費勁。

 

3.Django Apscheduler

 

地址:https://github.com/jcass77/django-apscheduler

 

Apscheduler是Python的第三方庫,提供了基于日期、固定時間間隔以及crontab 類型的任務(wù),可以在主程序的運行過程中快速增加新作業(yè)或刪除舊作業(yè),如果把作業(yè)存儲在數(shù)據(jù)庫中,那么作業(yè)的狀態(tài)會被保存,當(dāng)調(diào)度器重啟時,不必重新添加作業(yè),作業(yè)會恢復(fù)原狀態(tài)繼續(xù)執(zhí)行。

 

Apscheduler可以當(dāng)作一個跨平臺的調(diào)度工具來使用,可以作為 linux 系統(tǒng)crontab 工具或 windows 計劃任務(wù)程序的替換。

 

相應(yīng)的在Django中有集成包——django-apscheduler,它是一個 Django 應(yīng)用程序,它為 APScheduler 添加了一個輕量級的包裝器。它允許使用 Django 的 ORM 在數(shù)據(jù)庫中存儲持久作業(yè)。

 

總結(jié):

 

這是目前正在使用的方式,目前歷史上使用的是Django的1.x版本,而且并沒有做可視化的管理,Django本身自帶了一個admin管理頁面,這個頁面并不能滿足所有的需求。

 

4.JobCenter(Flask Apscheduler)

 

地址:https://github.com/guomaoqiu/JobCenter

 

Jobcenter的slogan是Apscheduler的最佳實踐,看名字是國人開發(fā)的。

Python開源任務(wù)調(diào)度管理項目的分析和對比(python 任務(wù) 調(diào)度 管理)

Jobcenter的slogan

 

特點:

 

  • 可視化界面操作
  • 定時任務(wù)統(tǒng)一管理
  • 完全完全的Crontab
  • 支持秒級任務(wù)
  • 作業(yè)任務(wù)可搜索、暫停、編輯、刪除
  • 作業(yè)任務(wù)持久化存儲、各種不同類型作業(yè)動態(tài)添加

Python開源任務(wù)調(diào)度管理項目的分析和對比(python 任務(wù) 調(diào)度 管理)

Jobcenter任務(wù)列表

Python開源任務(wù)調(diào)度管理項目的分析和對比(python 任務(wù) 調(diào)度 管理)

某個Job的日志

 

Jobcenter是基于Flask和Apscheduler開發(fā)的,本質(zhì)上也是對Apscheduler的封裝和使用,不過作者做了一個不錯的前端。但列表中編輯功能不可用,也沒有在列表操作中接入任務(wù)日志查看的功能。

 

總結(jié):

 

有句話說,踏破鐵鞋無覓處,得來全不費功夫。從目前來看,JobCenter的功能仿佛可以實現(xiàn)我的需求,本身模型的任務(wù)量級也不大,在百八十個左右。

 

傾向選擇:

 

【重點】如果環(huán)境是Linux的話,或者可以更改/新建Linux的環(huán)境,那么一定要選擇的Airflow,這是最佳實踐??蚣芴峁┑墓δ芎凸芾矶己芡晟啤?/strong>

 

如果只能在window機器,在考慮其他的。

 

3、4的區(qū)別在于web管理的實現(xiàn)框架上,一個是Django,一個是Flask,兩個框架的特點都非常的鮮明。

 

從目前的工作做下來,我個人傾向選擇3或者4。

 

對于當(dāng)前的實際情況來說,選擇3的優(yōu)點,是可以基于歷史項目升級,部分的功能可以復(fù)用(之前是基于Api管理),缺點是需要自主開發(fā)可視化的管理。

 

選擇4的優(yōu)點,前端功能大部分已經(jīng)實現(xiàn)了。缺點是還需要根據(jù)實際情況做功能改造,作者分享的源碼中部分功能沒有實現(xiàn),看提交,最近的更新是14個月前,看樣子維護(hù)的不勤快。

 

好了,具體怎么選擇還得領(lǐng)導(dǎo)決定,或者你有什么更好的開源項目歡迎分享給我。

 

我是馬拉松程序員,可不止代碼。

相關(guān)產(chǎn)品

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部
资中县| 郸城县| 新绛县| 安龙县| 天等县| 资兴市| 神农架林区| 盈江县| 启东市| 宜川县| 历史| 金山区| 利川市| 苏尼特左旗| 沐川县| 通海县| 永善县| 北海市| 云南省| 江孜县| 蒲城县| 宁强县| 合山市| 仪陇县| 广昌县| 婺源县| 和顺县| 临西县| 冀州市| 金秀| 黑山县| 苏尼特右旗| 凉城县| 宝山区| 黎城县| 凉山| 柯坪县| 汉沽区| 灵台县| 牟定县| 信阳市|