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)
class werkzeug.contrib.profiler.MergeStream(*streams)

An object that redirects write calls to multiple streams. Use this to log to both sys.stdout 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 profile_dir argument, pstat.Stats files are saved to that directory, one file per request. Without it, a summary is printed to stream instead.

For the exact meaning of sort_by and restrictions consult the profile documentation.

New in version 0.9: Added support for restrictions and profile_dir.

  • 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 profile_dir.
  • 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)