Add this library to your routes to add a REST API for profiling your Tornado application.
import tornado from tornado_profile import TornadoProfiler port = 8888 routes = [] routes += TornadoProfiler().get_routes() app = tornado.web.Application(routes) app.listen(port) tornado.ioloop.IOLoop.current().start() # Create with optional route prefix and base class for handlers routes += TornadoProfiler(prefix="", handler_base_class=custom_base_class).get_routes()
$ pip install tornado-profile
# Start the profiler
POST /profiler
# Stop the profiler
DELETE /profiler
# Get the profiler status
GET /profiler
{"running": true/false}
# Get the profiler statistics
GET /profiler/stats
{
"statistics": [
{
"path": ...,
"line": ...,
"func_name": ...,
"num_calls": ...,
"total_time": ...,
"total_time_per_call": ...,
"cum_time": ...,
"cum_time_per_call": ...
}
...
]
}
# Get the profiler statistics with optional query parameters
GET /profiler/stats?count=1&sort=num_calls&strip_dirs=false
# Clear the profiler statistics
DELETE /profiler/stats
Command Line: https://github.com/dimrozakis/tornado-profile-client