A tool to manipulate python code at runtime for logging, profiling, debugging, etc.
Project description
pyliveupdate
PyLiveUpdate
is a Python runtime monitoring, profiling, debugging and bugfixing tool.
PyLiveUpdate allows developers to profile, troubleshoot and fix production issues for Python applications without restarting the programs.
Demo
Key features (under developing)
- Profile specific Python functions' (by function names or module names) call time.
- Add / remove profilings without restart programs.
- Show profiling results with call summary and flamegraphs.
Quick start
Compatibility
- Supports Python 3.5+ on Linux.
Install
pip install pyliveupdate
or
git clone https://github.com/devopspp/pyliveupdate.git
pip install -e pyliveupdate
How to use
We currently implemented function profiling and are implementing more. Please feel free to let us know if you find other features useful: https://github.com/devopspp/pyliveupdate/issues/2.
profile function call time
- Start pyliveupdate server
pylu-controller
- In your program (like examples/program1.py) main module add
from pyliveupdate import *
from pyliveupdatescripts import *
UpdateStub().start()
- Run your program (make sure in the correct directory)
cd examples
python program1.py
- Start profile a set of functions
FP.profile(['__main__.**', 'module1.**'])
or any functions
FP.profile('**')
- Check output in either your program output or
/tmp/pyliveupdate.log
- List applied profiling
FP.ls()
- Stop a profiling by its id without stopping your program
FP.revert(1)
- Process the logs to generate a summary and a flamegraph
pylu-processlogs -i /tmp/pyliveupdate.log
- View the generated call summary and flamegraph
Function call summary
The following summary gives in process 4510
thread 5
, views.results
was called 10
times and each time takes 139 ms
, views.results
called manager.all
for 20
times.
4510-Thread-5
function hit time/hit (ms)
views.results 10 138.562
-manager.all 20 14.212
-__init__.__hash__ 10 0.035
-manager.get_queryset 20 0.922
-query.__init__ 20 0.616
-query.__init__ 20 0.071
Flamegraph
Known Users
Welcome to register your company name here: https://github.com/devopspp/pyliveupdate/issues/1
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyliveupdate-0.2.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0fe2516fb8c78725e95f55ad9347bf67fbf5561f2c15fa77c6740280e42a4b5b |
|
MD5 | 09903d2fd94dd1045621795d119125b3 |
|
BLAKE2b-256 | 1b35d5e816b7b71c5bcfedd77f5c1d0fcb43d061df1644318a46d1c41fadac51 |