社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

厉害了word哥,交互式实时监控调整python程序执行!

一个普普通通简简单单平平凡凡的神 • 8 年前 • 393 次点击  

之前调试线上程序时,经常遇到的一个问题就是,线上程序出现bug,但线下调试时却无法重现,或者说想重现需要的准备条件很繁琐。所以我就想,能不能在线上程序出现问题时,直接切入程序,实时看到程序内部状况,数据到底是什么样的。

本着这个目标,我开发了一个简单的console接口,通过继承抽象类的方式来保证程序提供一个命令行式交互界面,实时动态的监控调整正在运行的程序。

先写个例子简单演示一下:

创建test_console.py,编写如下代码

执行

python test_consoler.py

执行情况如下:

再开一个窗口,执行

python test_consoler.py --console

回到刚才的窗口

原程序的行为被改变了!

厉害了word哥!

回到命令行交互页面

命令行现在所处的作用域为__init__

那么__init__中的所有本地变量均可以访问

通过self,我们可以改变self绑定的方法及self属性

使用exit或者control + c退出

让我们来看一下console类

consoler.py

console类是一个单例抽象类,为什么是单例主要是因为console类我主要用于maxin到我的微服务类,所以必须是单例且抽象。

需要实现一个抽象属性args,args是ArgumentParser是结果集。

所以可以通过如下方式使用。

console主要做的事情有两件

  • 开启一个console服务
  • 开启一个console客户端

当启动程序时不加--console参数时,默认启动一个线程服务来监听console客户端的链接。

当启动程序时添加了--console参数时,程序开启一个console并连接服务。

该console类已经被maxin进了monitors.py中的微服务基类中,可以直接继承使用

灵感来源于werkzeug中关于debug中间件的实现。

项目地址:ShichaoMa/toolkit

安装:

pip install toolkity==1.3.4

相关文章:拒绝重复造轮子!python实用工具类及函数大推荐!

感谢阅读!


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/q6TxKIsfO4
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/4878