Toggle navigation

WSGI Application Profiler


This module provides a simple WSGI profiler middleware for finding bottlenecks in web application. It uses the profile or cProfile module to do the profiling and writes the stats to the stream provided (defaults to stderr).

Example usage:

from werkzeug.contrib.profiler import ProfilerMiddleware
app = ProfilerMiddleware(app)
  1. 2014 by the Werkzeug Team, see AUTHORS for more details.
BSD, see LICENSE for more details.
class werkzeug.contrib.profiler.MergeStream(*streams)

An object that redirects [UNKNOWN NODE title_reference] calls to multiple streams. Use this to log to both [UNKNOWN NODE title_reference] and a file:

f = open('profiler.log', 'w')
stream = MergeStream(sys.stdout, f)
profiler = ProfilerMiddleware(app, stream)
class werkzeug.contrib.profiler.ProfilerMiddleware(app, stream=None, sort_by=('time', 'calls'), restrictions=(), profile_dir=None)

Simple profiler middleware. Wraps a WSGI application and profiles a request. This intentionally buffers the response so that timings are more exact.

By giving the [UNKNOWN NODE title_reference] argument, pstat.Stats files are saved to that directory, one file per request. Without it, a summary is printed to [UNKNOWN NODE title_reference] instead.

For the exact meaning of [UNKNOWN NODE title_reference] and [UNKNOWN NODE title_reference] consult the profile documentation.

New in version 0.9: Added support for [UNKNOWN NODE title_reference] and [UNKNOWN NODE title_reference].

  • app – the WSGI application to profile.
  • stream – the stream for the profiled stats. defaults to stderr.
  • sort_by – a tuple of columns to sort the result by.
  • restrictions – a tuple of profiling strictions, not used if dumping to [UNKNOWN NODE title_reference].
  • profile_dir – directory name to save pstat files
werkzeug.contrib.profiler.make_action(app_factory, hostname='localhost', port=5000, threaded=False, processes=1, stream=None, sort_by=('time', 'calls'), restrictions=())

Return a new callback for werkzeug.script that starts a local server with the profiler enabled.

from werkzeug.contrib import profiler
action_profile = profiler.make_action(make_app)