受推土机/道瑟启发的多处理兼容内存泄漏调试器

pyloot的Python项目详细描述


皮根

PyLoot是一个基于Dozervprof的内存泄漏检测器,添加了对基于进程的服务器工作负载的支持。在

项目在开发过程中可能包含预期的或不活跃的bug。在

安装

$ pip install pyloot

使用

^{pr2}$

运行嵌入式

Starlette/FastApi/ASGI

frompylootimportPyLootfromfastapiimportFastAPIfromstarlette.applicationsimportStarlettefromstarlette.middleware.wsgiimportWSGIMiddlewareapp=FastAPI()# or Starlette()pyloot=PyLoot()app.on_event("startup")(pyloot.start)app.mount("/_pyloot",WSGIMiddleware(pyloot.get_wsgi()))

Flask/WSGI

frompylootimportPyLootfromflaskimportFlaskfromwerkzeug.middleware.dispatcherimportDispatcherMiddlewareapp=Flask(__name__)pyloot=PyLoot()app.on_before_first_request(pyloot.start)app=DispatcherMiddleware(app,{'/_pyloot':pyloot.get_wsgi()})

在远程模式下运行(多进程服务器)

# Embedded codefrompylootimportPyLoot...pyloot=PyLoot(host="127.0.0.1",port=8000)...
# Start the remote server
$ pyloot --help
usage: pyloot [-h HOST][-p PORT][--help]

optional arguments:
-h HOST, --host HOST  Host to listen on. (Default: 0.0.0.0)
-p PORT, --port PORT  Port to listen on. (Default: 8000)
--help                show this help message and exit

绕过多处理检查

如果pyloot检测到它正在一个带有inmemory后端的多处理环境中运行 它将拒绝提供网页/请求。在

starlette的WSGIMiddleware设置environ["wsgi.multiprocess"]=True,而不考虑服务器。 这可以通过包装器来绕过小心使用

pyloot=PyLoot()defpyloot_wrapper(wsgi_environ,start_response):pyloot_environ=wsgi_environ.copy()pyloot_environ["wsgi.multiprocess"]=Falsewsgi=pyloot.get_wsgi()returnwsgi(pyloot_environ,start_response)app.mount("/_pyloot",WSGIMiddleware(pyloot_wrapper))

截图

按对象组查看对象计数历史:

history screenshot

修改历史页面大小

history screenshot

搜索历史页面

history screenshot

按组查看对象

objects by group

修改对象获取大小

objects by group

修改对象页面大小

objects by group

查看对象及其属性repr、子对象和父对象

view and object

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spinner选定值未上载到firebase数据库   java如何通过bukkit中的配置添加消息?   java在SharedReference中保存列表的泛型类型   javascript Java小程序未定义   swt在Java中构建控制台应用程序   java OAuth同意屏幕没有突然显示,没有错误?   java webview选择文件安卓不工作   java Spring boot JPA如何从同一连接添加多个数据库?   java JDBC DB2驱动程序计时器线程处于阻塞状态   java我在vscode中运行flatter时看到一个错误在phone中运行应用程序somone能否帮助我plz   Java:生成JSON:如何避免生成不完整的JSON   java Date compareTo()方法始终返回1   当使用Junit runner运行测试时,java Spring自动连线失败   java Android/Sockets如何将信息从主UI线程发送到socket线程?   java Android内存声明全局变量   java如何在JBoss中拥有多个具有相同JNDI名称的数据源?   python在Java中嵌入CPython时,为什么会挂起?   java如何提供深度模拟对象?   java“find:smallint,expected:integer”Hibernate对informix数据库的验证在短时间内失败