<?xml version="1.0" encoding="UTF-8" ?>
<rdf:RDF xmlns="http://usefulinc.com/ns/doap#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Project><name>repoze.profile</name>
<shortdesc>Aggregate profiling for WSGI requests</shortdesc>
<description>repoze.profile README
=====================

This package provides a WSGI middleware component which aggregates
profiling data across *all* requests to the WSGI application.  It
provides a web GUI for viewing profiling data.

Installation
------------

Install using setuptools, e.g. (within a virtualenv)::

 $ easy_install repoze.profile

Configuration via Python
------------------------

Wire up the middleware in your application::

 from repoze.profile.profiler import AccumulatingProfileMiddleware
 middleware = AccumulatingProfileMiddleware(
                app,
                log_filename='/foo/bar.log',
                discard_first_request=True,
                flush_at_shutdown=True,
                path='/__profile__'
               )

The configuration options are as follows::

 - ``log_filename`` is the name of the file to which the accumulated
   profiler statistics are logged.

 - If ``discard_first_request`` to true (the default), then the
   middleware discards the statistics for the first request:  the
   rationale is that there are a bunch of lazy / "first time"
   initializations which distort measurement of the application's
   normal performance.

 - If ``flush_at_shutdown`` is true (the default), profiling data will
   be deleted when the middleware instance disappears (via its
   __del__).  If it's false, profiling data will persist across
   application restarts.

 - ``path`` is the URL path to the profiler UI.  It defaults to
   ``/__profile__``.

Once you have some profiling data, you can visit ``path`` in your
browser to see a user interface displaying profiling statistics
(e.g. ``http://localhost:8080/__profile__``).

Configuration via Paste
-----------------------

Wire the middleware into a pipeline in your Paste configuration, for
example::

 [filter:profile]
 use = egg:repoze.profile#profile
 log_filename = myapp.profile
 discard_first_request = true
 path = /__profile__
 flush_at_shutdown = true
 ...

 [pipeline:main]
 pipeline = egg:Paste#cgitb
            egg:Paste#httpexceptions
            profile
            myapp

Once you have some profiling data, you can visit ``path`` in your
browser to see a user interface displaying profiling statistics.

Reporting Bugs / Development Versions
-------------------------------------

Visit http://bugs.repoze.org to report bugs.  Visit
http://svn.repoze.org to download development or tagged versions.



repoze.profile 0.6 (2008-08-21)

  - ``discard_first_request = false`` did not work.

  - Clearing the profile data from the user interface did not properly
    discard profiler state.

repoze.profile 0.5 (2008-06-11)

  - Initial PyPI release.

repoze.profile 0.4 (2008-05-07)

  - Remove dependency-link to http://dist.repoze.org to prevent
    easy_install from adding that to its search path.

  - Incorporated a patch from Alec Flett &lt;alecf@metaweb.com&gt; to uses
    'cProfile', if available, rather than pure Python 'profile'.

  - Bump ez_setup.py version.

repoze.profile 0.3 (2008-02-20)

  - Added compatibility with Python 2.5.

  - Made setup.py epend explicitly on ElementTree 1.2.6: meld needs it
    but meld isn't a setuptools package.

repoze.profile 0.2 (2008-02-20)

  - Added a browser UI.

  - Added a knob to control discard at shutdown.

repoze.profile 0.1 (2008-02-08)

  - Initial release.</description>
<homepage rdf:resource="http://www.repoze.org" />
<maintainer><foaf:Person><foaf:name>Agendaless Consulting</foaf:name>
<foaf:mbox_sha1sum>077af4d52387f179a077d47e9bb8c9583a170f6a</foaf:mbox_sha1sum></foaf:Person></maintainer>
<release><Version><revision>0.6</revision></Version></release>
</Project></rdf:RDF>