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.
- Profile specific Python functions' (by function names or module names) call time.
- Add / remove profilings without restart programs.
- Add logs to specific functions.
- Dynamic patching a function.
- Supports Python 3.5+ on Linux.
pip install pyliveupdate
or
git clone https://github.com/devopspp/pyliveupdate.git
pip install -e pyliveupdate
We currently implemented function profiling and are implementing more. Please feel free to let us know if you find other features useful: devopspp#2.
- 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
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
Welcome to register your company name here: devopspp#1