您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:详解Python实现URL监测与即时推送

51自学网 2022-02-21 10:48:20
  python
这篇教程详解Python实现URL监测与即时推送写得很实用,希望能帮到您。

原理

采用Python requests发起请求监测的URL,检测Http响应状态及是否超时,如果Http状态异常或响应超时,则通过聚合云推的消息推送API将预警消息发送至邮箱、钉钉机器人、企业微信机器人、微信公众号等,服务端通过crontab定时(每分钟)执行代码,实现动态监测功能。

环境

操作系统: CentOS 7.x

Python版本: 3.6

消息推送服务: tui.juhe.cn

代码

#!/usr/bin/python3import requestsimport timeimport json# 监测URL是否正常响应def url_check(url):    # 当前时间    check_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())    print("开始监测:%s -- %s" % (url, check_time))    try:        # 请求URL, 设置3s超时        r = requests.get(url, timeout=3)        if r.status_code != 200:            # 请求响应状态异常            msg = "监控的URL:%s%sHttp状态异常:%s%s监测时间:%s" % (url, "/n/n", r.status_code, "/n/n", check_time)            print("监测结果:异常(Http状态异常:%s) -- %s" % (r.status_code, check_time))            # 通过云推推送消息            yuntui_push(msg)        else:            # 请求响应正常            print("监测结果:正常 -- %s" % check_time)    except requests.exceptions.ConnectTimeout:        # 请求响应超时        msg = "监控的URL:%s%s请求异常:%s%s监测时间:%s" % (url, "/n/n", "请求超时", "/n/n", check_time)        print("监测结果:超时 -- %s" % check_time)        # 通过云推推送消息        yuntui_push(msg)# 将预警消息通过云推推送def yuntui_push(content):    # 当前时间    push_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())    # 云推接口的信息配置,可以通过 https://tui.juhe.cn 自行注册创建    # (可以配置邮件、钉钉机器人、微信公众号等接收方式)    token = "*****************"    service_id = "******"    title = "URL可用性监控预警"    doc_type = "markdown"    body = {"token": token, "service_id": service_id, "title": title, "content": content, "doc_type": doc_type}    try:        r = requests.post("https://tui.juhe.cn/api/plus/pushApi", data=body, timeout=15)        push_res = json.loads(r.content)        code = push_res['code']        if code == 200:            print("推送结果:成功 -- %s" % push_time)        else:            print("推送结果:失败(%s) -- %s" % (push_res['reason'], push_time))    except requests.exceptions.ConnectTimeout:        print("推送结果:超时 -- %s" % push_time)# 执行URL可用性监测if __name__ == '__main__':    # 监控URL可用性    # url_check("https://www.test.com")    url_check("https://www.baidu.com/")

如果requests未安装可以执行以下命令安装

pip3 install requests

crontab计划任务配置

命令行输入crontab -e进入计划任务配置

# 每分钟执行一次*/1 * * * * /usr/bin/python3 /data/check_url/main.py >> /data/log.txt

查看日志

cat /data/log.txt
开始监测:https://www.baidu.com/ -- 2021-11-16 15:04:01监测结果:正常 -- 2021-11-16 15:04:01开始监测:https://www.baidu.com/ -- 2021-11-16 15:05:02监测结果:正常 -- 2021-11-16 15:05:02开始监测:https://www.baidu.com/ -- 2021-11-16 15:06:01监测结果:正常 -- 2021-11-16 15:06:01开始监测:https://www.baidu.com/ -- 2021-11-16 15:07:01监测结果:正常 -- 2021-11-16 15:07:01开始监测:https://www.baidu.com/ -- 2021-11-16 15:08:01监测结果:正常 -- 2021-11-16 15:08:01开始监测:https://www.test.com -- 2021-11-16 15:11:01监测结果:超时 -- 2021-11-16 15:11:01推送结果:成功 -- 2021-11-16 15:11:04开始监测:https://www.test.com -- 2021-11-16 15:12:01监测结果:超时 -- 2021-11-16 15:12:01推送结果:成功 -- 2021-11-16 15:12:04

预警消息效果

如果监测到异常结果,你在云推配置的接收终端将会收到通知,类似如下:

钉钉群机器人:

image.png

邮件:

image.png

微信公众号:

image.png

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注51zixue.net的更多内容!


如何使用Python基于接口编程的方法实现
python django入门
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。