Python定時任務,三步實現自動

2021-10-10 14:35:03 字數 3092 閱讀 9539

今天主要會用到linux下的cron這個服務,ok,直接開始

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

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

# 檢查是否已經預裝了cron

service cron status

安裝並啟動服務

安裝:apt-get install cron

啟動/停止/重啟:service cron start/stop/restart

查詢當前任務:crontab -l

安裝完成後檢查一下是否安裝成功,同樣使用 status命令檢視

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

這個也表示可以正常使用

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

首先,列出當前使用者計畫的cron作業:

crontab -l
檢視其它使用者的cron作業:

crontab –l –u username
移除已經計畫的cron作業:

crontab –r
首先,通過如下命令新增或更新crontab中的任務

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

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

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

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表示

舉幾個簡單的應用案例:

0 2 * * * command
0 5,17 * * * command
*/10 * * * * command
0 17 * jan,may,aug sun command
上面案例中的command 表示你具體需要執行的任務,例如列印一段話:

echo "hello xiaoyi" >> /tmp/test.txt
或者將這段話輸出到txt中:

echo "hello xiaoyi" >> /tmp/test.txt
或者是你需要執行乙個python指令碼:

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

① python指令碼

首先需要python指令碼完成以下功能:

上面這個流程大致的偽**是這樣的:

if __name__ == '__main__':

"""獲取最新資料日期"""

latest_date = get_max_date()

# 以最新日期為名建立資料夾

download_dir = os.path.join(sys.ar**[1], latest_date)

if not os.path.exists(download_dir):

os.makedirs(download_dir)

download_file(latest_date, download_dir)

"""處理最新資料並儲存"""

process_data(latest_date, download_dir)

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

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

②編寫cron任務

開啟crontab,編輯如下內容到最後一行,儲存並退出

crontab是會自動實時更新任務列表的,如果不放心也可以通過restart命令重啟cron 服務【參考文章開頭】

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

③ 效果監控

如果python**沒有問題,任務會定時執行。

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

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

說點題外話

如果說你平時的工作有很多重複的任務,像日常指標的採集、取數匯**計、郵件自動**等等

一旦這些工作你可以通過指令碼設定好邏輯,自動化任務也就可以實現它,最多就需要你每天注意一下郵件,看看有沒有發生錯誤就行了。

多人學習python,不知道從何學起。

很多人學習python,掌握了基本語法過後,不知道在**尋找案例上手。

很多已經做案例的人,卻不知道如何去學習更加高深的知識。

qq群:1057034340

Python實現定時任務

工作中可能需要週期性執行一些任務,俗稱定時任務。linux環境下,可以借助於系統自帶的crontab完成定時任務。但是很多時候,開發人員可能並沒有許可權去操作crontab。而schedule是python的輕量級定時任務解決方案,可以滿足常定時採集資料,定時執行指令碼程式等週期性任務需求。pip ...

Python實現定時任務

python下實現定時任務的方式有很多種方式。下面介紹幾種 迴圈sleep 這是一種最簡單的方式,在迴圈裡放入要執行的任務,然後sleep一段時間再執行。缺點是,不容易控制,而且sleep是個阻程式設計客棧塞函式。def timer n 每n秒執行一次 while true print time.s...

Python定時任務實現

定時執行任務,定時 pip install schedule import schedule import time 不帶引數定時執行 def job print i m working.schedule.every 10 seconds.do job 每10秒執行一次 schedule.every...