Python Tornado Support

Hello New Relic Python community,

Since joining New Relic 6 months ago working on the Python agent, one constant has been the request by our community and customers to have better Tornado support.

While we’ve had ‘introductory’ Tornado support in a few feature flags, they were not well documented and failed to meet the expectation of usefulness for both ourselves and our users.

The New Relic Python team hope to change that by having Tornado in New Relic as our current focus. Long story short, we believe that, there are generally 3 major issues that could go awry in an asynchronous application.

  1. The network was slow. It took a while to get a response from the other server
  2. There was blocking work within the function itself
  3. There was other work blocking the IO loop

New Relic can help users understand 1 and 2 above today, but we have not been successful in helping surface #3. We believe a good solution is to show users when other work is being done as a segment within the context of a transaction.

Something like this:

To deliver on the above for Tornado, our plan is to target Tornado v6 (python 3+) in our official Tornado instrumentation. At the same time, we will end support for our old introductory Tornado feature flags in future agent releases.

How does the proposed plan work with what you are doing? We’d love to hear from you.

1 Like

Exciting update! We have zeroed in on a solution. In order to release the solution quickly, we decided the path forward is to introduce a new major version of the New Relic Python Agent with the new Async/Tornado support. Initially, the new Python agent will only support Tornado v6. We intend to add Tornado v5 support in the near future. At the same time, we will not port over the existing Tornado Feature Flags, including r1, r2, r3, r4 to the new version. We will include a deprecation warning for the feature flag Tornado instrumentation in the next Python Agent 4.x.x release.

A late update - we’ve released a new important feature that offers much better async support - read here -