This release of the Python agent adds support for the improved Django middleware introduced in Django v1.10, and also adds instrumentation for the
Django 1.10 Middleware Support
As described in Django Enhancement Proposal 5 and in the Django v1.10 middleware documentation, Django introduced a new style of middleware in version 1.10. Previously, Django allowed you to define certain methods on middleware classes:
process_request()methods would run before the view handler was invoked, and
process_response()methods would run after the response was generated. Accordingly, the Python agent would instrument these as separate, self-contained methods, and in the Transaction Trace Details view, they would be displayed at the same level as the view handler in the segments hierarchy.
With the improved version in Django v1.10, the middleware classes form a "chain", and each middleware calls the next middleware, until it reaches the end of the chain and calls the actual view. This means that new-style middleware acts as a wrapper, and each one is nested inside the previous one. As a result, in the Transaction Trace Details view, each middleware will be nested inside the previous one, and the actual view handler will be displayed nested inside the innermost middleware class. Furthermore, the duration of each middleware segment will include the duration of the middleware nested inside it.
Because Django v1.10 is backwards-compatible with the old-style middleware, the agent also supports instrumenting old-style middleware in Django v1.10
Boto3 and AWS CLI Support
With this release, API calls to Amazon Web Services endpoints made with the
awsclipackages will be recorded as
External Tracesand will be visible in the
External Servicestab in APM. This is achieved by instrumenting the
botocorelibrary, which both
Proxy Scheme Output of
Prior to this release, the
newrelic-admin network-configcommand would output the incorrect proxy scheme. That is now fixed.
Debug Console Works with Python 3
newrelic-admin debug-consoleis now compatible with Python 3.