Skip to main content

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

asciicast

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

  1. Start pyliveupdate server
pylu-controller
  1. In your program (like examples/program1.py) main module add
from pyliveupdate import *
from pyliveupdatescripts import *
UpdateStub().start()
  1. Run your program (make sure in the correct directory)
cd examples
python program1.py
  1. Start profile a set of functions
FP.profile(['__main__.**', 'module1.**'])

or any functions

FP.profile('**')
  1. Check output in either your program output or /tmp/pyliveupdate.log
  2. List applied profiling
FP.ls()
  1. Stop a profiling by its id without stopping your program
FP.revert(1)
  1. Process the logs to generate a summary and a flamegraph
pylu-processlogs -i /tmp/pyliveupdate.log
  1. 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

alt text

Known Users

Welcome to register your company name here: https://github.com/devopspp/pyliveupdate/issues/1

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyliveupdate-0.2.6.tar.gz (34.3 kB view hashes)

Uploaded Source

Built Distribution

pyliveupdate-0.2.6-py3-none-any.whl (60.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page