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.
Parameters: - 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)