首頁  >  文章  >  後端開發  >  Python定時任務,實現自動化的方法

Python定時任務,實現自動化的方法

coldplay.xixi
coldplay.xixi轉載
2020-11-16 17:12:062639瀏覽

python教學專欄介紹實現自動化的方法。

Python定時任務,實現自動化的方法

1. 安裝cron

基本上所有的Linux發行版在預設情況下都預先安裝了cron工具。

即使未預先安裝cron,也很簡單,執行幾個簡單的指令就可手動安裝

# 检查是否已经预装了cron
service cron status复制代码

安裝並啟動服務

安装:apt-get install cron
启动/停止/重启:service cron start/stop/restart
查询当前任务:crontab -l复制代码

2. 安裝檢查

安裝完成後檢查是否安裝成功,同樣使用status指令查看

#出現如下提示表示安裝成功:

Python定時任務,實現自動化的方法

##另外,在ubuntu下可能會出現這樣的提示:

Python定時任務,實現自動化的方法

這個也表示可以正常使用

3. cron用法

有幾個關於cron的簡單用法可以了解一下,後面也會透過一個案例詳細介紹如何使用

首先,

列出當前使用者計劃的cron作業:

crontab -l复制代码
查看其它使用者的cron作業:

crontab –l –u username复制代码
移除已經規劃的cron作業:

crontab –r复制代码
4. 調度crontab計畫

首先,透過以下指令

新增或更新crontab中的任務

Python定時任務,實現自動化的方法

第一次進入會要求你選擇編輯器,這個根據自己的習慣選擇。

選擇好之後會進入到這樣的一個介面:

Python定時任務,實現自動化的方法

#用過vim的同學應該對這個介面不陌生,類似的操作:

按A鍵開始編輯,按ESC輸入wq儲存並退出

重點是最下面的一段內容:

m h dom mon dow commmand复制代码

這個其實就是crontab調度作業的一個使用介紹,可以用來設定定時任務。

具體一點的語法是這樣的:

m h dom mon dow command
* * * * * command
- - - - - -
| | | | | |
| | | | | --- 预执行的命令
| | | | ----- 表示星期0~7(其中星期天可以用0或7表示)
| | | ------- 表示月份1~12
| | --------- 表示日期1~31
| ----------- 表示小时1~23(0表示0点)
------------- 表示分钟1~59 每分钟用*或者 */1表示复制代码
舉幾個簡單的應用案例:

    每天02:00 執行任務
0 2 * * * command复制代码
    每天5:00和17:00執行任務
0 5,17 * * * command复制代码
    每10min 執行一次任務
*/10 * * * * command复制代码
    在特定的某幾個月的星期日17:00 執行任務
0 17 * jan,may,aug sun command复制代码
差不多常用的就這些,更多的使用案例還可以參考這個連結:http://linux.51yip .com/search/crontab

上面案例中的command 表示你具體需要執行的任務,例如列印一段話:

echo "Hello xiaoyi" >> /tmp/test.txt 
复制代码
或將這段話輸出到txt中:

echo "Hello xiaoyi" >> /tmp/test.txt 
复制代码
或是你需要執行一個Python腳本:

python demo.py filepath复制代码
後面的filepath表示輸入的參數args,這個可能有的同學會用到,例如下面的案例中需要輸入檔案下載路徑。

5. 實戰

上面的都搞清楚了,就可以開始今天的重頭戲了。

首先我們需要每天從ftp伺服器下載最新的任務數據,將數據下載到本地後透過Python進行數據匯總統計,最後將結果存入資料庫中,如果期間某個環節出現問題則發送告警郵件。

① Python腳本
首先需要Python腳本完成以下功能:

    從資料庫中取得最新資料日期
  • 從ftp中下載最新資料到本地
  • 對本地最新資料進行匯總統計
  • 統計結果存入資料庫匯總
  • 郵件通知
上面這個流程大致的偽代碼是這樣的:

if __name__ == '__main__':    """获取最新数据日期"""
    latest_date = get_max_date()    # 以最新日期为名创建文件夹
    download_dir = os.path.join(sys.argv[1], latest_date)    if not os.path.exists(download_dir):
        os.makedirs(download_dir)        
    """从ftp中下载最新数据"""
    download_file(latest_date, download_dir)    """处理最新数据并保存"""
    process_data(latest_date, download_dir)复制代码

郵件監控可以在加一個try catch的異常捕獲,有異常發生的時候則發送郵件

Python編輯郵件內容並發送以前也有寫過,可以參考下面這個:Python郵件發送

②編寫cron任務
打開crontab,編輯如下內容到最後一行,保存並退出

crontab是會自動即時更新任務清單的,如果不放心也可以透過restart指令重啟cron 服務【參考文章開頭】

Python定時任務,實現自動化的方法

這裡有個小建議,所有的路徑都填入絕對路徑

③ 效果監控
如果Python程式碼沒有問題,任務會定時執行。

這裡建議可以把自己的command單獨在控制台運行下,沒有問題的時候再寫進到cron任務清單紅。

最終小一的定時任務運行截圖如下:

最下面是ftp檔案下載,上面是資料匯總統計

Python定時任務,實現自動化的方法

#####相關免費學習推薦:#########python教學#########(影片)########

以上是Python定時任務,實現自動化的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.im。如有侵權,請聯絡admin@php.cn刪除