這篇文章主要介紹Python定時(shí)任務(wù)如何實(shí)現(xiàn)自動(dòng)化,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)黃梅,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
基本上所有的Linux發(fā)行版在默認(rèn)情況下都預(yù)安裝了cron工具。
即使未預(yù)裝cron,也很簡(jiǎn)單,執(zhí)行幾條簡(jiǎn)單的命令就可手動(dòng)安裝
# 檢查是否已經(jīng)預(yù)裝了cron service cron status復(fù)制代碼
安裝并啟動(dòng)服務(wù)
安裝:apt-get install cron 啟動(dòng)/停止/重啟:service cron start/stop/restart 查詢當(dāng)前任務(wù):crontab -l復(fù)制代碼
安裝完成后檢查一下是否安裝成功,同樣使用 status命令查看
出現(xiàn)如下提示表示安裝成功:
另外,在ubuntu下可能會(huì)出現(xiàn)這樣的提示:
這個(gè)也表示可以正常使用
有幾個(gè)關(guān)于cron的簡(jiǎn)單用法可以了解一下,后面也會(huì)通過一個(gè)案例詳細(xì)介紹如何使用
首先,列出當(dāng)前用戶計(jì)劃的cron作業(yè):
crontab -l復(fù)制代碼
查看其它用戶的cron作業(yè):
crontab –l –u username復(fù)制代碼
移除已經(jīng)計(jì)劃的cron作業(yè):
crontab –r復(fù)制代碼
首先,通過如下命令添加或更新crontab中的任務(wù)
第一次進(jìn)入會(huì)要求你選擇編輯器,這個(gè)根據(jù)自己的習(xí)慣選擇。
選擇好之后會(huì)進(jìn)入到這樣的一個(gè)界面:
用過vim的同學(xué)應(yīng)該對(duì)這個(gè)界面不陌生,類似的操作:按A鍵開始編輯,按ESC輸入wq保存并退出
重點(diǎn)是最下面的一段內(nèi)容:
m h dom mon dow commmand復(fù)制代碼
這個(gè)其實(shí)就是crontab調(diào)度作業(yè)的一個(gè)使用介紹,可以用來設(shè)置定時(shí)任務(wù)。
具體一點(diǎn)的語法是這樣的:
m h dom mon dow command * * * * * command - - - - - - | | | | | | | | | | | --- 預(yù)執(zhí)行的命令 | | | | ----- 表示星期0~7(其中星期天可以用0或7表示) | | | ------- 表示月份1~12 | | --------- 表示日期1~31 | ----------- 表示小時(shí)1~23(0表示0點(diǎn)) ------------- 表示分鐘1~59 每分鐘用*或者 */1表示復(fù)制代碼
0 2 * * * command復(fù)制代碼
0 5,17 * * * command復(fù)制代碼
*/10 * * * * command復(fù)制代碼
0 17 * jan,may,aug sun command復(fù)制代碼
差不多常用的就這些,更多的使用案例還可以參考這個(gè)鏈接:http://linux.51yip.com/search/crontab
上面案例中的command 表示你具體需要執(zhí)行的任務(wù),例如打印一段話:
echo "Hello xiaoyi" >> /tmp/test.txt 復(fù)制代碼
或者將這段話輸出到txt中:
echo "Hello xiaoyi" >> /tmp/test.txt 復(fù)制代碼
或者是你需要執(zhí)行一個(gè)Python腳本:
python demo.py filepath復(fù)制代碼
后面的filepath表示輸入的參數(shù)args,這個(gè)可能有的同學(xué)會(huì)用到,例如下面的案例中需要輸入文件下載路徑。
上面的都搞清楚了,就可以開始今天的重頭戲了。
首先我們需要每天從ftp服務(wù)器中下載最新的任務(wù)數(shù)據(jù),將數(shù)據(jù)下載到本地后通過Python進(jìn)行數(shù)據(jù)匯總統(tǒng)計(jì),最后將結(jié)果存入數(shù)據(jù)庫中,如果期間某個(gè)環(huán)節(jié)出現(xiàn)問題則發(fā)送告警郵件。
首先需要Python腳本完成以下功能:
上面這個(gè)流程大致的偽代碼是這樣的:
if __name__ == '__main__': """獲取最新數(shù)據(jù)日期""" latest_date = get_max_date() # 以最新日期為名創(chuàng)建文件夾 download_dir = os.path.join(sys.argv[1], latest_date) if not os.path.exists(download_dir): os.makedirs(download_dir) """從ftp中下載最新數(shù)據(jù)""" download_file(latest_date, download_dir) """處理最新數(shù)據(jù)并保存""" process_data(latest_date, download_dir)復(fù)制代碼
郵件監(jiān)控可以在加一個(gè)try catch的異常捕獲,有異常發(fā)生的時(shí)候則發(fā)送郵件
Python編輯郵件內(nèi)容并發(fā)送以前也有寫過,可以參考下面這個(gè):Python郵件發(fā)送
打開crontab,編輯如下內(nèi)容到最后一行,保存并退出
crontab是會(huì)自動(dòng)實(shí)時(shí)更新任務(wù)列表的,如果不放心也可以通過restart命令重啟cron 服務(wù)【參考文章開頭】
這里有個(gè)小建議,所有的路徑都填寫絕對(duì)路徑
如果Python代碼沒有問題,任務(wù)會(huì)定時(shí)執(zhí)行。
這里建議可以把自己的command單獨(dú)在控制臺(tái)運(yùn)行下,沒有問題的時(shí)候再寫進(jìn)到cron任務(wù)列表紅。
最終小一的定時(shí)任務(wù)運(yùn)行截圖如下:
最下面是ftp文件下載,上面是數(shù)據(jù)匯總統(tǒng)計(jì)
以上是Python定時(shí)任務(wù)如何實(shí)現(xiàn)自動(dòng)化的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!