受推土机/道瑟启发的多处理兼容内存泄漏调试器
pyloot的Python项目详细描述
皮根
PyLoot是一个基于Dozer和vprof的内存泄漏检测器,添加了对基于进程的服务器工作负载的支持。在
项目在开发过程中可能包含预期的或不活跃的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))
截图
按对象组查看对象计数历史:
修改历史页面大小
搜索历史页面
按组查看对象
修改对象获取大小
修改对象页面大小
查看对象及其属性repr、子对象和父对象
- 项目
标签: