Giter Site home page Giter Site logo

memaldi / linesman Goto Github PK

View Code? Open in Web Editor NEW

This project forked from amcfague/linesman

0.0 1.0 0.0 983 KB

Intelligent Profiling for Python WSGI Applications

Home Page: http://pypi.python.org/pypi/linesman

License: GNU General Public License v3.0

Python 82.43% CSS 12.19% JavaScript 5.39%

linesman's Introduction

linesman is a much needed profiler-for-WSGI applications. It installs as middleware, can be configured entirely from any paster config, and aims to be a jack-of-all-trades when it comes to profiling WSGI apps.

Since a picture is worth a thousand words, here are a few screenshots of the interface:

The changelog can always be viewed from the source, or on PyPi. Keep in mind, PyPi is only updated with each release, and does not include development documentation.

Reasoning behind this library

One of my team's stories at work was to investigate existing Python profiling tools for use with some of our new web stacks (all in Pylons). I looked at a few--repoze.profile, kea.profile, and even dozer (still in 0.2alpha)--but couldn't find any that suited our use case. We wanted to...

  • visualize the flow of our code
  • identify bottlenecks quickly and easily
  • have the ability to strip out extraneous calls

Many of the tools simply outputted the pstats object from cProfile, which can be difficult to parse, and even more difficult to identify the call order. Considering that cProfile provided all the information needed, I figured it would be just as easy to write our own middleware.

linesman is a name given to people who inspect electrical Pylons, and was a meek attempt at having a relevant library name.

Setting up middleware

Now, you'll need to tell your WSGI application how to use Linesman. Assuming you're using Paster, you can do this very easily in your development.ini (or similar) config file. Add a new filter section:

[filter:linesman]
use = egg:linesman#profiler

Then, find the section for your specific application. Typically, it will have a section header that looks like [app:main]. Add the following config option somewhere within this section:

filter-with = linesman

Wallah! Once you start your paster server, you'll be all set. Verify that all is working correctly by accessing pages on your server. This will also create profile entries for the next step.

Accessing the profiles

This will assume that your application is mounted at the root directory, /, and that your server is running on localhost at port 5000. If not, make sure you adjust your URLs accordingly.

Access the URL at http://127.0.0.1:5000/__profiler__, which should present you with a list of profiles and times, with a link to the stats page. If you can see this (and view the profiles), then you're all set!

Happy profiling!

linesman's People

Contributors

amcfague avatar memaldi avatar gertburger avatar dahlia avatar jjguy avatar simonsapin avatar peralta avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.