New Relic provides first class insight into the performance of Django apps.
Every web transaction is measured and named after the primary source (view handler, middleware, etc) of the response. Slow transactions produce in-depth transaction traces that can show the time spent in various functions involved in handling that particular request. Our trace details cover the whole spectrum, including: time spent in the database, view handler, middleware and template rendering.
In addition to counting and timing calls made to the database, New Relic will automatically capture slow queries and report the underlying database's explain plans. This makes it easy to find a missing index and see all the improvements it makes. We have full support for Django and SQLAlchemy ORM frameworks and any database adapter that is DBAPI2 compliant.
Runtime exceptions in Django are silently converted to 500 errors by the framework. New Relic automatically intercepts them and reports those exceptions along with their stack traces, making it easy to fix errors that might otherwise go unnoticed in production.
A common question among web developers is "How many worker processes do I need to provision in order to handle my traffic?" With New Relic, you can visualize the utilization of the different workers and the available cpu capacity. In addition, you can easily report the "Queue time" which shows how long your front-end web server was waiting for a Python worker process to handle a request. This happens automatically on popular PAAS providers like Heroku and is trivial to configure in apache, nginix, and nearly any front-end web server.