close

在運維服務器的時候經常會用到一些Crontab任務。

當你的Crontab中的任務數超過10個的時候,你會發現這些任務管理起來非常困難。

尤其是當這些Cron任務執行失敗的時候,比如 Python 實用寶典網 每個月初都會執行一次https證書刷新,有一次協議更新之後,我的腳本失效了三個月,導致證書過期時網站宕機了一天,直到我發現並修復了這個問題。

這就是Crontab任務的一個劣勢:沒有方便的回調功能。

不過,現在有一個非常方便的開源Django項目能在這些Crontab失效的時候通知你,它就是healthchecks.

它通過一個回調接口判斷你的Crontab任務有沒有順利執行。

比如說你有一個python腳本定時執行,healthchecks給定的回調URL是:

http://localhost:8000/ping/880cb4d

在配置Crontab腳本的時候,就需要這麼寫:

8 6 * * * python /home/user/test.py && curl -fsS -m 10 --retry 5 -o /dev/null http://localhost:8000/ping/880cb4d2

如果未按時調用回調接口,healthchecks將會通過郵件等通知方式告警。

那麼這個「未按時」能否設定寬限呢?比如我有個任務要跑1個小時左右,那麼這個任務應該是預計在一個半小時內調用(Ping)回調接口,超過一個半小時如果沒有調用回調接口則告警。答案是肯定的。

上圖中Period指的是兩次Ping之間的時間間隔。下方Grace表示「寬限期」,自從上次Ping以來的時間已超過Period+Grace則會發送告警通知。

如果你用不習慣這種可視化的選擇器,它還提供了Crontab表達式給你定義Period和Grace:

真乃神器啊!它支持的通知方式如下:

國內用戶可能一般只會用到Email和Teams,高級點的用戶可能會用到IFTTT的Webhooks和普羅米修斯。總之,按你的愛好來就行。

下面教大家如何在本地搭建這個項目:

1. 下載項目


使用Git工具克隆該項目:

git clonehttps://github.com/healthchecks/healthchecks

如果你訪問不了github,可在【Python 實用寶典】公眾號後台回復healthchecks下載完整源代碼

2.創建虛擬環境


推薦使用Python 3.6+,如果你有conda,那就非常方便了,創建healthchecks虛擬環境:

conda create -n healthchecks python=3.6activate healthchecks

如果你沒有conda,你需要先安裝Python3.6,然後使用pip安裝virtualenv,在終端輸入以下命令創建healthchecks虛擬環境:

python3 -m venv healthcheckssourcehealthchecks/bin/activate

不同系統中命令可能不太一樣,遇到問題多利用搜索引擎查詢就好了。

3.安裝依賴


進入到上述創建好的虛擬環境後,cd進入項目根目錄,輸入以下命令安裝依賴:

pip install -r requirements.txt

4.數據庫配置(可選)


該項目默認使用SQLite,這意味着你不需要特殊配置也可照常運轉。

如果你需要配置MySQL或PostgreSQL,請閱讀 hc/local_settings.py.example 文件進行配置即可。

5.數據表遷移


Django項目當然少不了這個環節,虛擬環境下,在根目錄里運行以下命令進行數據表的遷移:

python manage.py migrate

當然,還要創建超管用戶:

python manage.py createsuperuser

6.運行項目


大功告成,輸入以下命令即可運行項目:

python manage.py runserver

點擊右上角login in登錄到超管用戶就可以開始使用了。

如果你需要對這個項目進行大規模的改動,建議使用Pycharm作為編程工具,因為使用Pycharm來寫Django實在是太爽了,詳細可以參考這篇文章:《Pycharm+Django 安裝及配置指南》


我們的文章到此就結束啦,如果你喜歡今天的Python 實戰教程,請持續關注Python實用寶典。

有任何問題,可以在公眾號後台回覆:加群,回答相應紅字驗證信息,進入互助群詢問。

原創不易,希望你能在下面點個讚和在看支持我繼續創作,謝謝!

點擊下方閱讀原文可獲得更好的閱讀體驗

Python實用寶典(pythondict.com)不只是一個寶典歡迎關注公眾號:Python實用寶典

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()