python装饰器实现对异常代码出现进行自动监控的实现方法


Posted in Python onSeptember 15, 2020

异常,不应该存在,但是我们有时候会遇到这样的情况,比如我们监控服务器的时候,每一秒去采集一次信息,那么有一秒没有采集到我们想要的信息,但是下一秒采集到了, 而后每次的采集都能采集到,就那么一次采集不到,我们应该针对这一次采集不到进行分析吗,这种的情况可以说无法重复出现,我们也无法避免,因为外界的因素太多太多,我们无法去控制这些外面的因素,所以我们会有这样的需求,一段时间内出现频率多少次,我们才能显示一次报警,或者说,一段时间内出现的频率达到我们的异常许可范围我们认为这样的属于异常,我们可以发出报警。

那么我们怎么来实现呢,我想到了装饰器,当程序执行到异常后,我记录时间,写入文件,然后读取最近的第五次的判断,两者时间戳的只差小于60s,我认为这样的可以发送警报,如果大于60s,则认为不足以发出我们的警告,

那么我们来看看我们的代码应该怎么写。

import datetime,time,random
def make(func):
  def mak(*args,**kwargs):
    try:
      func(*args,**kwargs)
    except:
      with open('except.txt','a+') as f:
        except_time=datetime.datetime.now()
        f.writelines(except_time.strftime('%Y-%m-%d %H:%M:%S')+'\n')
        f.close()
      with open('except.txt','rb') as m:
        try:
          date=m.readlines()[-5].decode('utf-8')
          ne=(date.split('\r\n')[0])
          f1=datetime.datetime.strptime(ne,'%Y-%m-%d %H:%M:%S')
          if (except_time-f1).seconds<6:
            print('异常!!!fail')
          else:
            print('正常!')
          m.close()
        except:
          print('越界代表着我们的实验是成功的')
  return mak
@make
def beijing(i,m):
  print(i/m)
if __name__=="__main__":
  while True:
    f=random.choice([0,1,2,3])
    n=random.choice([0,1,2,3])
    beijing(f,n)
    time.sleep(0.3)

这样我们针对一个程序的异常监控就实现了,我们来运行下这个异常监控的代码。,

python装饰器实现对异常代码出现进行自动监控的实现方法

我们可以看到我们的代码可以正常运行,那么我们来试试,我们对多个程序的代码进行监控,我们的脚本可不可以实现呢。

@make
def shanghai(i,m):
  print(i/m)
@make
def rizhao(i,m):
  print(i/m)
@make
def zhengzhou(i,m):
  print(i/m)

PS:遇到问题没人解答?需要Python学习资料?可以加点击下方链接自行获取
note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76

我们增加这么几个方法,并且我们去运行他们,

python装饰器实现对异常代码出现进行自动监控的实现方法

我们可以看到,只要有异常,我们的程序都会记录,当然了,这样的还不能正常利用到我们的工作中,

稍后,可以将这里的异常监控的部分的实践,和我之前写的异常监控脚本想结合下。

总结

到此这篇关于python装饰器实现对异常代码出现进行自动监控的实现方法的文章就介绍到这了,更多相关python装饰器自动监控内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
仅利用30行Python代码来展示X算法
Apr 01 Python
Python:Scrapy框架中Item Pipeline组件使用详解
Dec 27 Python
python分治法求二维数组局部峰值方法
Apr 03 Python
Python Requests模拟登录实现图书馆座位自动预约
Apr 27 Python
python自动查询12306余票并发送邮箱提醒脚本
May 21 Python
python 列表,数组和矩阵sum的用法及区别介绍
Jun 28 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
Mar 18 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
Mar 25 Python
Python 使用office365邮箱的示例
Oct 29 Python
TensorFlow的环境配置与安装方法
Feb 20 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
Feb 24 Python
Python requests上传文件实现步骤
Sep 15 #Python
python -v 报错问题的解决方法
Sep 15 #Python
基于Python正确读取资源文件
Sep 14 #Python
Django框架安装及项目创建过程解析
Sep 14 #Python
通过代码实例了解Python sys模块
Sep 14 #Python
基于python实现简单C/S模式代码实例
Sep 14 #Python
Elasticsearch py客户端库安装及使用方法解析
Sep 14 #Python
You might like
一个用于mysql的数据库抽象层函数库
2006/10/09 PHP
一个颜色轮换的简单例子
2006/10/09 PHP
php实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
JS和函数式语言的三特性
2014/03/05 Javascript
JS简单计算器实例
2015/01/20 Javascript
js改变Iframe中Src的方法
2015/05/05 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
JS实现漂亮的时间选择框效果
2016/08/20 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
jquery仿苹果的时间/日期选择效果
2017/03/08 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
2018/10/10 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
Nodejs 识别图片类型的方法
2019/08/15 NodeJs
JavaScript使用localStorage存储数据
2019/09/25 Javascript
Python学生成绩管理系统简洁版
2020/04/05 Python
Python判断一个三位数是否为水仙花数的示例
2018/11/13 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
2019/05/10 Python
python多进程使用函数封装实例
2020/05/02 Python
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
高中生毕业评语
2014/12/30 职场文书
拾金不昧感谢信
2015/01/21 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
Django一小时写出账号密码管理系统
2021/04/29 Python
关于golang高并发的实现与注意事项说明
2021/05/08 Golang
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA