亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python和Shell腳本實(shí)現(xiàn)輕量級(jí)監(jiān)控接口

 更新時(shí)間:2025年08月18日 09:40:33   作者:網(wǎng)羅開(kāi)發(fā)  
這篇文章主要介紹了如何通過(guò) Python 和 Shell 腳本快速實(shí)現(xiàn)接口監(jiān)控,自動(dòng)讀取接口列表,批量檢測(cè)接口返回狀態(tài)和耗時(shí),并最終生成一份清晰的可視化報(bào)告,希望對(duì)大家有所幫助

在日常運(yùn)維和開(kāi)發(fā)工作中,我們經(jīng)常會(huì)遇到這樣一個(gè)問(wèn)題:系統(tǒng)上線之后,需要驗(yàn)證幾十甚至上百個(gè)接口是否都能正常訪問(wèn)。手動(dòng)一個(gè)一個(gè)去點(diǎn)、去測(cè),不僅效率低,而且容易漏掉關(guān)鍵接口。特別是在微服務(wù)架構(gòu)下,接口數(shù)量龐大,接口的健康狀況直接決定了服務(wù)是否穩(wěn)定。

本文將介紹如何通過(guò) Python 和 Shell 腳本快速實(shí)現(xiàn)接口監(jiān)控,自動(dòng)讀取接口列表,批量檢測(cè)接口返回狀態(tài)和耗時(shí),并最終生成一份清晰的可視化報(bào)告(支持 Markdown 或 HTML 格式)。這樣你就能在最短時(shí)間內(nèi)確認(rèn)接口是否健康,而不是盯著瀏覽器或 Postman 一次次重復(fù)操作。

引言

隨著微服務(wù)、API 網(wǎng)關(guān)、容器化部署的普及,一個(gè)完整的應(yīng)用系統(tǒng)可能依賴幾十個(gè)甚至上百個(gè) REST API 接口。每次上線之后,團(tuán)隊(duì)都要花費(fèi)時(shí)間確認(rèn)接口是否正常響應(yīng),尤其是在跨環(huán)境(開(kāi)發(fā)、測(cè)試、生產(chǎn))部署時(shí),這種驗(yàn)證工作不可或缺。
傳統(tǒng)做法是開(kāi)發(fā)手工用瀏覽器打開(kāi)、用 Postman 點(diǎn)接口,或者通過(guò) curl 一條條執(zhí)行。這種方式效率很低,而且不可持續(xù)。理想的方式應(yīng)該是:

  • 批量讀取接口地址
  • 自動(dòng)檢測(cè)接口是否存活、返回碼和響應(yīng)時(shí)間
  • 把結(jié)果生成報(bào)告,一目了然

接下來(lái),我們就來(lái)一步步構(gòu)建一個(gè)這樣的輕量化解決方案。

用 Python 快速實(shí)現(xiàn)接口監(jiān)控

讀取接口列表

通常我們會(huì)把接口集中放在一個(gè)文本文件里,比如 urls.txt

https://api.example.com/health
https://api.example.com/v1/user
https://api.example.com/v1/order

每一行代表一個(gè)待檢測(cè)的接口。

核心腳本實(shí)現(xiàn)

下面的 Python 腳本使用 requests 來(lái)檢測(cè)接口,記錄返回的狀態(tài)碼和耗時(shí),并把結(jié)果寫(xiě)入一個(gè) Markdown 報(bào)告文件。

import requests
import time
from datetime import datetime

def check_url(url):
    try:
        start = time.time()
        response = requests.get(url, timeout=5)
        duration = round((time.time() - start) * 1000, 2)  # 毫秒
        return response.status_code, duration
    except Exception as e:
        return None, None

def main():
    # 讀取接口列表
    with open("urls.txt", "r") as f:
        urls = [line.strip() for line in f if line.strip()]

    # 生成報(bào)告文件
    report_name = f"report_{datetime.now().strftime('%Y%m%d_%H%M%S')}.md"
    with open(report_name, "w") as report:
        report.write("| URL | Status | Response Time (ms) |\n")
        report.write("| --- | ------ | ------------------ |\n")
        for url in urls:
            status, duration = check_url(url)
            if status:
                report.write(f"| {url} | {status} | {duration} |\n")
            else:
                report.write(f"| {url} | Error | - |\n")
    print(f"接口檢測(cè)完成,結(jié)果保存在 {report_name}")

if __name__ == "__main__":
    main()

代碼解析

  • check_url:負(fù)責(zé)單個(gè)接口檢測(cè),返回狀態(tài)碼和耗時(shí)。
  • urls.txt:統(tǒng)一管理所有待檢測(cè)接口。
  • report_xxx.md:自動(dòng)生成 Markdown 格式的檢測(cè)結(jié)果,方便閱讀或上傳到 GitLab/GitHub。

示例輸出

| URL | Status | Response Time (ms) |
| --- | ------ | ------------------ |
| https://api.example.com/health | 200 | 120.35 |
| https://api.example.com/v1/user | 200 | 220.11 |
| https://api.example.com/v1/order | Error | - |

用 Shell 腳本實(shí)現(xiàn)極簡(jiǎn)版本

有些時(shí)候,Python 環(huán)境不方便直接部署,這時(shí)可以用一個(gè)簡(jiǎn)單的 Shell 腳本加 curl 來(lái)實(shí)現(xiàn):

#!/bin/bash

input="urls.txt"
output="report_$(date +%Y%m%d_%H%M%S).md"

echo "| URL | Status | Time (ms) |" > $output
echo "| --- | ------ | --------- |" >> $output

while IFS= read -r url
do
    if [ -n "$url" ]; then
        start=$(date +%s%3N)
        status=$(curl -o /dev/null -s -w "%{http_code}" "$url")
        end=$(date +%s%3N)
        duration=$((end-start))
        
        if [ "$status" -eq 200 ]; then
            echo "| $url | $status | $duration |" >> $output
        else
            echo "| $url | $status | $duration |" >> $output
        fi
    fi
done < "$input"

echo "接口檢測(cè)完成,結(jié)果保存在 $output"

核心邏輯

  • curl 獲取接口響應(yīng)狀態(tài)碼。
  • 計(jì)算時(shí)間差作為響應(yīng)時(shí)長(zhǎng)。
  • 輸出 Markdown 格式結(jié)果。

應(yīng)用場(chǎng)景舉例

場(chǎng)景一:服務(wù)上線前的批量驗(yàn)證

開(kāi)發(fā)完成后要上線新版本,可以先在測(cè)試環(huán)境跑一遍檢測(cè)腳本,確保所有接口返回 200,再推進(jìn)到生產(chǎn)。

示例:

python check_api.py

得到報(bào)告后,可以快速交給 QA 或運(yùn)維確認(rèn)。

場(chǎng)景二:定時(shí)健康檢查

通過(guò) cron 或 CI/CD 配合腳本定時(shí)執(zhí)行,把接口狀態(tài)報(bào)告每天生成一次。

這樣可以快速發(fā)現(xiàn)某個(gè)接口掛掉的情況,而不是等用戶反饋。

示例 crontab -e 配置:

0 * * * * python /home/user/check_api.py

表示每小時(shí)執(zhí)行一次。

場(chǎng)景三:上線后灰度驗(yàn)證

在灰度發(fā)布過(guò)程中,可以只把部分接口地址放進(jìn) urls_gray.txt,運(yùn)行檢測(cè)腳本,快速確認(rèn)新版本健康。

QA 環(huán)節(jié)

Q1:能不能直接生成 HTML 報(bào)告?

可以。把 Markdown 轉(zhuǎn)換成 HTML 非常容易,Python 中可以用 markdown 庫(kù),或者直接輸出 HTML 表格。

Q2:如果接口需要鑒權(quán)怎么辦?

可以在 requests.get()curl 中加上 Header,比如帶上 Token。

Q3:能不能同時(shí)檢測(cè)并發(fā)請(qǐng)求?

完全可以,用 Python 的 concurrent.futures 或者 asyncio 實(shí)現(xiàn)異步檢測(cè),可以大幅度提升檢測(cè)速度。

總結(jié)

本文展示了如何用 Python 和 Shell 腳本快速實(shí)現(xiàn)一套接口監(jiān)控方案,解決了部署后需要手動(dòng)逐一驗(yàn)證接口的問(wèn)題。方案的關(guān)鍵點(diǎn)在于:

  • 接口集中管理,批量檢測(cè)。
  • 檢測(cè)結(jié)果可視化(Markdown/HTML)。
  • 可結(jié)合 CI/CD 或定時(shí)任務(wù),實(shí)現(xiàn)自動(dòng)化。

這種方案非常適合微服務(wù)架構(gòu)下的日常運(yùn)維,既輕量又實(shí)用,不需要額外引入復(fù)雜的監(jiān)控平臺(tái),就能在第一時(shí)間發(fā)現(xiàn)接口問(wèn)題。

到此這篇關(guān)于Python和Shell腳本實(shí)現(xiàn)輕量級(jí)監(jiān)控接口的文章就介紹到這了,更多相關(guān)Python監(jiān)控接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python編程學(xué)習(xí)之如何判斷3個(gè)數(shù)的大小

    Python編程學(xué)習(xí)之如何判斷3個(gè)數(shù)的大小

    這篇文章主要給大家介紹了關(guān)于Python編程學(xué)習(xí)之如何判斷3個(gè)數(shù)的大小的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 對(duì)django 2.x版本中models.ForeignKey()外鍵說(shuō)明介紹

    對(duì)django 2.x版本中models.ForeignKey()外鍵說(shuō)明介紹

    這篇文章主要介紹了對(duì)django 2.x版本中models.ForeignKey()外鍵說(shuō)明介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Python上傳package到Pypi(代碼簡(jiǎn)單)

    Python上傳package到Pypi(代碼簡(jiǎn)單)

    這篇文章主要介紹了Python上傳package到Pypi(代碼簡(jiǎn)單)的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • python opencv 找出圖像中的最大輪廓并填充(生成mask)

    python opencv 找出圖像中的最大輪廓并填充(生成mask)

    這篇文章主要介紹了python opencv 找出圖像中的最大輪廓并填充(生成mask),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 示例詳解python中的排序

    示例詳解python中的排序

    本文詳細(xì)介紹了如何使用Python實(shí)現(xiàn)兩組數(shù)據(jù)的縱向排序,包括開(kāi)發(fā)思想、開(kāi)發(fā)流程和代碼示例,感興趣的朋友一起看看吧
    2024-12-12
  • 詳解python中__name__的意義以及作用

    詳解python中__name__的意義以及作用

    這篇文章主要介紹了詳解python中__name__的意義以及作用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python2.7和NLTK安裝詳細(xì)教程

    python2.7和NLTK安裝詳細(xì)教程

    這篇文章主要為大家詳細(xì)介紹了python2.7和NLTK安裝詳細(xì)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 如何一鍵升級(jí)Python所有包

    如何一鍵升級(jí)Python所有包

    這篇文章主要介紹了如何一鍵升級(jí)Python所有包,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • Win10 GPU運(yùn)算環(huán)境搭建(CUDA10.0+Cudnn 7.6.5+pytroch1.2+tensorflow1.14.0)

    Win10 GPU運(yùn)算環(huán)境搭建(CUDA10.0+Cudnn 7.6.5+pytroch1.2+tensorflow1.

    熟悉深度學(xué)習(xí)的人都知道,深度學(xué)習(xí)是需要訓(xùn)練的,本文主要介紹了Win10 GPU運(yùn)算環(huán)境搭建,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • python使用scapy模塊實(shí)現(xiàn)ping掃描的過(guò)程詳解

    python使用scapy模塊實(shí)現(xiàn)ping掃描的過(guò)程詳解

    這篇文章主要介紹了python使用scapy模塊實(shí)現(xiàn)ping掃描的過(guò)程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01

最新評(píng)論