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 相关文章推荐
Python中的字典与成员运算符初步探究
Oct 13 Python
Android应用开发中Action bar编写的入门教程
Feb 26 Python
SQLite3中文编码 Python的实现
Jan 11 Python
对TensorFlow中的variables_to_restore函数详解
Jul 30 Python
用Python+OpenCV对比图像质量的几种方法
Jul 15 Python
Python DataFrame一列拆成多列以及一行拆成多行
Aug 06 Python
利用python计算时间差(返回天数)
Sep 07 Python
python中必要的名词解释
Nov 20 Python
Python *args和**kwargs用法实例解析
Mar 02 Python
python中用Scrapy实现定时爬虫的实例讲解
Jan 18 Python
Python IO文件管理的具体使用
Mar 20 Python
python三子棋游戏
May 04 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
PHP中文分词的简单实现代码分享
2011/07/17 PHP
ThinkPHP入口文件设置及相关注意事项分析
2014/12/05 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
bootstrap datepicker的基本使用教程
2019/07/09 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
Vue性能优化的方法
2020/07/30 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
三步搞定:Vue.js调用Android原生操作
2020/09/07 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
python optparse模块使用实例
2015/04/09 Python
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
实例讲解Python中SocketServer模块处理网络请求的用法
2016/06/28 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
CSS3解决移动页面上点击链接触发色块的问题
2016/06/03 HTML / CSS
印度在线内衣和时尚目的地:Zivame
2017/09/28 全球购物
表达自我的市场:Society6
2018/08/01 全球购物
PHP经典面试题
2016/09/03 面试题
会计电算化专业毕业生推荐信
2013/12/24 职场文书
幼儿园数学教学反思
2014/02/02 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
应届毕业生自荐信
2015/03/04 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
市场营销计划书
2019/04/24 职场文书
redis击穿 雪崩 穿透超详细解决方案梳理
2022/03/17 Redis
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS