Task Automation
再利用Python建立很多自動化任務後,看似方便節省了很多時間,但當任務一多時,整個就混亂啦!包含近期在幫部門架設一些金融資料ETL或相關計算的程式,而跟金融市場相關的就是有一堆日期與時點,總不可能在每次開盤到收盤後的時間都要用一個紙本SOP一一清點吧?這時候就最需要自動排程工具了。
現有的排程工具
排程系統有分兩類,一個是系統內建,另外一類就是自己額外架設的,作業系統內建的好處就是不用再安裝,對於某些高度資訊戒嚴的公司而言,可能是唯一的辦法了。
Crontab (Linux/MacOS)
透過建立一個crontab文件來記錄執行的內容與時間,但就是真的只有執行而已,如果錯誤等流程就要靠自己了。
工作排程器(Windows)
在過去待過資訊戒嚴管制的公司下,裝什麼都有問題,連一個最簡單的pip install xxx都可以讓我搞一整個下午,所以排程這檔事,選擇的空間都沒有,直接就是Windows內建的工作排程器啦!排程一樣可
以上兩種方法我都使用過,當然就是一個最基本的可執行元件,當實際要的問題要解決時,往往相當複雜且繁瑣。
APScheduler
APScheduler是一款相當優秀的自動化排程套件,功能相當完整,且可將任務儲存於資料庫中,其他大部分都是把任務存在程式碼中,除非自行做一些客製化修改。
Apache AirFlow
AirFlow是另一款更為知名且完整的自動化任務管理框架,且內建網頁前後端作為管理介面(使用Flask),學習曲線稍微陡一些,對於初學者而言可能沒那麼直覺,但對於後期管理上可走較遠。有個潛在問題就是AirFlow無法在Windows上運行(Docker不算),對於某些公司或部門來說就是比較大的劣勢,你可能說搞一台Linux VM不就好了?是的,但是實際上公司或部門的政策就是不允許。
Last updated