New Relic Browser and the Python agent

With the Python agent, you can add New Relic Browser instrumentation to your webpages either automatically or manually. To enable Browser in the user interface, see Browser settings. Then follow the procedures in this section to set up the Python agent.

To use Browser with your Python agent, ensure you have the latest release. For more information, see the agent installation instructions.

Support for automatic instrumentation

New Relic's Python agent only supports automatic instrumentation for WSGI applications that are hosted directly on a dedicated WSGI server with a native WSGI interface, and where the WSGI application returns the HTML page response via an iterable/generator.

Automatic instrumentation requires a dedicated WSGI server.

  • WSGI servers such as Apache/mod_wsgi, gunicorn and uWSGI are supported.
  • Using WSGI adapters on top of either the Tornado or Twisted frameworks is not supported.

The Python agent does not support insertion of instrumentation when using the write() callback returned from the WSGI start_response() function to write back the HTML page response. For more information about requirements for automatic instrumentation, see Troubleshooting Browser instrumentation in Python.

Use automatic instrumentation

The Python agent can automatically add the JavaScript code instrumentation for browser monitoring to any HTML page responses. For WSGI applications, the agent uses a WSGI middleware installed into the request pipeline. Since the middleware is at WSGI level, automatic instrumentation should work for any WSGI application regardless of the web framework you are using, including popular Python web frameworks such as Django, Flask and Pyramid.

Disable instrumentation for specific pages

If you want to use automatic instrumentation, but have an HTML page response that you do not want instrumented, you can disable instrumentation for that request. Add this Python agent API call into the code for that request handler:


If you are using a WSGI server that allows per-request configuration, such as Apache/mod_wsgi, you can also disable automatic instrumentation by setting the newrelic.disable_browser_autorum key for that request in the WSGI environ dictionary passed into your monitored application.

For example, if using Apache/mod_wsgi, you could disable automatic instrumentation by filtering on the URL:

<Location /login>
SetEnv newrelic.disable_browser_autorum true

Manually instrument via agent API

You can manually add instrumentation to specific pages. This is useful, for example, if automatic instrumentation is not possible for your application, or if you want to collect Browser data for only some pages.

To enable manual instrumentation, place the calls in this procedure on every request you want to monitor. You cannot call these functions once at global scope and cache the result for later use.

  1. Disable automatic instrumentation: In the newrelic.ini file, set browser_monitoring.auto_instrument to false.
  2. Restart your application.
  3. Place these calls into the request handler of every page you want to monitor:

    import newrelic.agent
    header = newrelic.agent.get_browser_timing_header()
    footer = newrelic.agent.get_browser_timing_footer()
  4. Pass the header and footer variables to the HTML response.
  5. On the corresponding page, insert the header variable in the <head> element. Place the header variable after any charset properties or any meta tags for http-equiv with a value of X-UA-Compatible.
  6. Insert the footer variable before the end of the <body> element.

Wait a few minutes, then check your Browser data. If no data appears after waiting a few minutes, see Troubleshooting Browser instrumentation in Python.

For more help

Additional documentation resources include:

Join the discussion about Python in the New Relic Online Technical Community! The Technical Community is a public platform to discuss and troubleshoot your New Relic toolset.

If you need additional help, get support at