伺服器定時任務的執行失敗重新嘗試5次

2021-08-03 10:03:12 字數 795 閱讀 3166

在某個定時爬取資料的任務中,因為執行任務時各種原因存在使得任務在第一次執行的時候失敗,但是任務指令碼並不存在任何問題,因此此時需要設定失敗的時候繼續重新執行任務。

為了解決這個問題,可以使用迴圈,我的解決邏輯如下:

#迴圈執行5次

for loop in 1 2 3 4 5

do echo「this is the $loop try!」

pythonmycrawler.py params  #執行我的定時任務

if [ $-ne 0 ]; #判斷定時任務執行的狀態嗎是否失敗

then

if [ $loop -eq 5 ] #在5次嘗試都失敗後發出報警資訊

then send_error "python mycrawler.py params error and theloop is $loop"

sleep 10s #在下次執行之前先暫停10s

exit 1

ficontinue #跳出當前迴圈執行下一次迴圈任務

fiecho "成功" #成功之後在介面列印成功狀態

break  #成功之後跳出所有迴圈

done #for迴圈結束標誌

解決這個問題需要關注的是任務的要求:

1.    任務第一次執行會失敗,但是再次執行可能會成功,那麼需要嘗試5次

2.    如果第5次嘗試仍舊失敗,需要發出報警資訊

3.    任務執行失敗的原因可能是任務之間執行的太緊湊,可以設定任務之間的執行間隔即sleep一段時間

4.    如果任務在某次成功之後,不再執行其它的迴圈,即迴圈要及時停止

保證定時任務只在單個伺服器執行

寫了乙個定時任務,半小時執行一次,上線之後發現12個伺服器都去執行了。定時任務 讀取ftp檔案伺服器上某個路徑下的檔案,然後解析檔案提取每行特定列的字段,然後把符合條件的話單資料的id 手機號等資訊通過遠端介面送給第三方。由於所有伺服器都執行,導致所有伺服器差不多在1min左右先後讀取了同乙個檔案然...

window2008伺服器定時任務

1.建立 bat 字尾檔案 d soft php package php5.5 php.exe c d soft php package php5.5 php.ini q d wwwroot chosetel fukuan ds.php 2.ds.php 應用入口檔案 檢測php環境 if vers...

PHP利用伺服器實現定時任務

利用伺服器實現簡單的定時任務,windows的計畫任務,linux的cron,適用於每天某一特點時間執行 windows下用定時任務執行auto.php檔案,auto.php檔案裡用curl請求指定的介面實現 auto.php 如下 function docurlgetrequest timeout...