The Gevent Request Profiler enables the discovery of blocking/non-yielding code in request-handling servers implemented with the Gevent networking library.
|examples||Add built-in gevent.pywsgi support.|
|tellapart||Add built-in gevent.pywsgi support.|
|README||Add built-in gevent.pywsgi support.|
======================= Gevent Request Profiler ======================= The Gevent Request Profiler enables the discovery of blocking/non-yielding code in request-handling servers implemented with the Gevent networking library (http://www.gevent.org/). Culprits may include blocking I/O (e.g., file I/O, native I/O, or non- monkey-patched socket requests) and CPU-intensive code. Unlike the cProfile module, it is not a deterministic profiler that precisely measures the run-times of all function calls. Rather, it identifies 'execution spans', intervals during which greenlets do not cooperatively yield to other greenlets, for a set fraction of requests. The profiler works with gevent.wsgi and gevent.pywsgi servers out of the box, but it's straightforward to add support for other server types. See the Profiler doc comment in gevent_profiler.py for details. Developed by TellApart (http://www.tellapart.com) and licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0). ============ Installation ============ To install, run: sudo python setup.py install =============== Getting Started =============== The best way to get a feel for the profiler is to bring up a server, make a few requests, and watch the greenlet transitions happen. You can get started by running: examples/wsgi_example.py Toggle between gevent.wsgi and gevent.pywsgi at the top of the script.