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内存管理方式和垃圾回收算法解析
Nov 11 Python
django用户注册、登录、注销和用户扩展的示例
Mar 19 Python
redis之django-redis的简单缓存使用
Jun 07 Python
浅谈pycharm下找不到sqlalchemy的问题
Dec 03 Python
python,Django实现的淘宝客登录功能示例
Jun 12 Python
Python range、enumerate和zip函数用法详解
Sep 11 Python
Python sys模块常用方法解析
Feb 20 Python
Python 处理日期时间的Arrow库使用
Aug 18 Python
python 常用日期处理-- datetime 模块的使用
Sep 02 Python
Python使用Pygame绘制时钟
Nov 29 Python
python中PyQuery库用法分享
Jan 15 Python
详解python日志输出使用配置文件格式
Feb 10 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 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
2014/06/12 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
php实现计数器方法小结
2015/01/05 PHP
php eval函数一句话木马代码
2015/05/21 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
PHP实现上一篇下一篇的方法实例总结
2016/09/22 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
js中if语句的几种优化代码写法
2011/03/12 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
Nodejs中Express 常用中间件 body-parser 实现解析
2017/05/22 NodeJs
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
JavaScript new对象的四个过程实例浅析
2018/07/31 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
Element UI框架中巧用树选择器的实现
2018/12/12 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
Python tempfile模块学习笔记(临时文件)
2014/05/25 Python
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
基于python3 的百度图片下载器的实现代码
2019/11/05 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
工作人员思想汇报
2014/01/09 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
学校社会实践活动总结
2014/07/03 职场文书
辞旧迎新演讲稿
2014/09/15 职场文书
建筑工地文明标语
2014/10/09 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书
房屋所有权证明
2015/06/19 职场文书