Python Release Notes

Python Agent Release Notes

Wednesday, February 28, 2018 - 12:00 Download

Notes

This release of the Python agent adds support for AIOHTTP version 3.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Improved AIOHTTP Support

  • Support for AIOHTTP 3

    AIOHTTP major version 3 is now supported by the New Relic Python agent.

Tuesday, February 20, 2018 - 15:00 Download

Notes

This release of the Python agent adds a deprecation warning for customers that disable SSL, and adds bugfixes for supported async frameworks that use asyncio.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Mandatory SSL

  • Disabling SSL connections to New Relic has been deprecated

    SSL connections are enabled by default. In a future release, the option to disable SSL will be removed.

Bug Fixes

  • Using asyncio.gather or asyncio.ensure_future now tracks transaction context

    Prior to this release, using asyncio.gather or asyncio.ensure_future may result in certain traces (such as external calls) not being reported in the transaction. Traces scheduled with asyncio.gather or asyncio.ensure_future from within the context of a transaction should now be properly attributed to the transaction.

Monday, February 5, 2018 - 11:00 Download

Notes

This release of the Python agent contains improvements to the time tracing API as well as bug fixes.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Time Trace API Improvements

  • Time trace APIs (such as function_trace) can now be used with coroutines

    The following decorator APIs can now be used with native coroutines and generators:

    • function_trace
    • database_trace
    • datastore_trace
    • external_trace
    • message_trace
    • memcache_trace

    Example:

    @function_trace(name='my_coroutine')
    async def my_coroutine():
      await asyncio.sleep(0.1)

Bug Fixes

  • gRPC instrumentation used on Python 2.x can cause a memory leak

    When using gRPC on Python 2, gRPC futures would not be garbage collected resulting in a memory leak. gRPC futures will now be garbage collected.

  • Instrumentation for Dropbox v8.0 and newer caused error log messages

    Dropbox client version 8.0 or higher raised instrumentation errors. These errors did not prevent metrics on Dropbox from being sent. These errors have been removed.

  • Values from negated ranges were sometimes added to ignore_status_codes

    Negated status codes not found in the current ignore_status_codes were added if they were part of a range of values. This issue has been addressed.

Tuesday, January 9, 2018 - 10:30 Download

Notes

This release of the Python agent contains security related updates as well as bug fixes.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Security Updates

See the associated security bulletins for custom API parameters in high security mode and for SQL params for SQLite.

Bug Fixes

  • Using the aiohttp client may result in an application crash

    Under certain circumstances, using the aiohttp client may have resulted in an application crash. This issue has been addressed.

  • Database queries made with psycopg2 may not have been recorded

    When using the "with" statement to create a cursor, time spent on database calls may not have been properly recorded. This issue has been addressed.

  • Usage of the pika library resulted in a memory leak

    When using the pika library with New Relic, Channel objects would not be cleared from memory as expected. This would result in abnormally high memory utilization in some cases. The memory leak has now been fixed.

  • DeprecationWarning generated for async/await keywords

    Using the agent may have generated a DeprecationWarning around async/await being reserved keywords. The DeprecationWarning should no longer be generated.

Thursday, November 30, 2017 - 11:00 Download

Notes

This release of the Python agent adds improvements to django instrumentation, improvements to django rest framework instrumentation, and various bug fixes.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Improved Features

  • Enabled reporting of handled exceptions in Django REST Framework

    Exceptions handled by django rest framework are now reported if the resulting response code is not ignored (see ignore_status_codes for details).

  • Add support for the error_collector.ignore_status_codes setting in Django

    Ignoring exceptions in Django was previously limited to the error_collector.ignore_errors configuration option. Ignoring exceptions by response status code is now supported for Django through the use of the error_collector.ignore_status_codes configuration option.

Bug Fixes

  • Servicing aiohttp websocket requests results in an application crash

    Servicing a websocket request in an aiohttp application may have resulted in an application crash when using the New Relic python agent. The application will now operate as expected when handling a websocket request.

  • Ignore incomplete aiohttp transactions

    In aiohttp, connections can be terminated prior to the HTTP response being generated and sent. In those cases, the request handler may be cancelled. These transactions are no longer reported.

  • Fix HTTP status reporting for Tornado transactions

    HTTP status was not properly added to Tornado transaction events and transaction traces. HTTP status is now automatically added to Tornado transaction events in Insights and transaction traces in APM.

  • Fix reporting of concurrent external requests in Tornado

    External requests that execute in parallel in a tornado application may not have been recorded. This issue has been addressed.

Monday, October 16, 2017 - 11:00 Download

Notes

This release of the Python agent adds instrumentation for aiohttp framework, adds support for displaying Heroku dyno names, and various bug fixes.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

New Features

  • Add instrumentation for aiohttp framework

    Data is now automatically collected for applications using the aiohttp framework. Data for aiohttp applications will appear in both APM and Insights. Additionally, cross application tracing is supported for incoming requests for aiohttp applications. In addition to service maps, aiohttp applications will now show the calling application in transaction traces.

  • Add support for displaying Heroku dyno names

    Heroku-friendly logic is now applied to how dyno names are displayed. This includes being able to collapse dyno hostnames based on prefix.

Bug Fixes

  • Fix crash for gunicorn gaiohttp driver

    Using gunicorn's gaiohttp worker with New Relic Browser monitoring enabled may have resulted in an application crash. This crash has been fixed and the gaiohttp worker is now fully supported with the New Relic Python Agent.

  • Fix crash for pika versions 0.9.x and earlier

    Using the agent with pika versions 0.9.x and earlier could have resulted in an application crash. This issue has now been fixed.

Tuesday, September 19, 2017 - 13:00 Download

Notes

This release of the Python agent adds instrumentation for aiohttp client.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

New Features

  • Add instrumentation for aiohttp client

    Outbound HTTP requests through the aiohttp library are now recorded. aiohttp Cross Application Tracing is now supported for outbound requests. In addition to Service Maps, applications accessed through the aiohttp client will now appear in transaction traces.

Bug Fixes

  • Fix crash when using psycopg2 v2.7 composable queries

    The psycopg2 library introduced a module to generate SQL dynamically (psycopg2.sql) in version 2.7. Passing a Composable type object (psycopg2.sql.Composable) to execute or executemany resulted in an application crash. The agent now correctly handles psycopg2 Composable objects.

Wednesday, September 6, 2017 - 10:00 Download

Notes

This release of the Python agent adds support for monitoring of outbound gRPC requests and adds an API for cross application tracing of custom non-HTTP transports. For details on APIs for cross application tracing see the cross application tracing document.

The agent can be installed using easy_install/pip/distribute via the Python Package Index  or can be downloaded directly from the New Relic download site.

New Features

  • Add API for cross application tracing of non-HTTP external services

    A new API is now exposed for implementing cross application tracing in custom instrumentation of non-HTTP transport libraries. For usage of this API see the cross application tracing document.


  • Add instrumentation for gRPC client calls

    Outbound gRPC requests will now show up in APM under the External Services tab and in transaction traces.


Bug Fixes

  • Fixes erroneous recording of TastyPie NotFound exceptions

    
When a TastyPie API view raised a NotFound exception resulting in a 404 response, the agent may have erroneously recorded the exception. This has now been fixed.

Monday, July 31, 2017 - 14:00 Download

Notes

This release of the Python agent includes bug fixes and improvements to the builtin pika instrumentation.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Improved Feature

  • Naming of Pika Message Transactions

    This release improves the naming of message transactions . Message consumer transactions are now split based on the name of the consume callback.

  • Improved metadata collection for cloud providers

    The agent now collects additional metadata when running in AWS, GCP, Azure, and PCF. This information is used to provide an enhanced experience when the agent is deployed on those platforms.

Bug Fixes

  • CherryPy WSGI Server automatic instrumentation

    This release fixes a bug where cherrypy.wsgiserver.CherryPyWSGIServer was not being instrumented. This bugfix impacts CherryPy versions v6.1.0 to v8.9.1.

Wednesday, July 12, 2017 - 14:00 Download

Notes

This release of the Python agent includes bug fixes for the pika RabbitMQ library instrumentation.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Bug Fixes

  • Using pika to make RPC-style calls from Tornado could result in an application crash

    When making a remote procedure call from a tornado web application using the pika RabbitMQ library's Tornado connection, it is possible for the tornado web application to crash. Pika Tornado connections no longer result in an application crash.

  • AttributeError generated from an unregistered application starting a MessageTransaction

    Applications which consume message transactions and do not call register_application can raise an AttributeError resulting in an application crash. This issue has now been fixed.

Thursday, July 6, 2017 - 14:00 Download

Notes

This release of the Python agent adds built-in instrumentation for the pika RabbitMQ library, a message broker API which can be used to add custom instrumentation for additional message brokers, and various bug fixes.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

New Features

  • Pika Instrumentation

    The RabbitMQ pika library is now automatically instrumented. The agent will report data for messages sent and received by an application. Data on messages is available in both APM and Insights. Applications connected through a RabbitMQ exchange will now also be visible on Service Maps as part of Cross Application Tracing.

  • Message Broker API

    A Message Broker API is now available for use in custom instrumentation. The Message Broker API will send data to APM and Insights (through message.routingKey and message.queueName attributes) for message broker related operations.

  • Tornado 4.5 Support

    The Python Agent's out-of-the-box Tornado 4 instrumentation now supports Tornado version 4.5.

  • Tornado AsyncIO Loop

    In addition to the Tornado PollIOLoop, the AsyncIO loop is now supported as part of our Tornado instrumentation. When Tornado is configured to use the AsyncIO loop, data will now be sent to New Relic. Note that AsyncIO is not yet generally supported.

Bug Fixes

  • SQL comments beginning with a "--" resulted in an improperly parsed query

    When executing SQL queries with comments that used the "--" comment syntax, the database operation and table was not properly parsed resulting in queries being absent from the Databases tab. Queries with "--" comments should now show up in the Database tab.

  • AttributeError generated when using Tornado 4 HTTPRequest objects in an external web call

    When using the Tornado 4 HTTPRequest object as an argument to HTTPClient.fetch, it was possible to generate an AttributeError. The web call now completes as expected.

  • Slow network connections may result in lost data

    When, due to a slow network, a 408 error is returned from New Relic data was not retransmitted. Data is now retransmitted when a 408 is received.

Friday, May 26, 2017 - 11:00 Download

Notes

This release of the Python agent includes various bug fixes as described below.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Bug Fixes

  • Handle exceptions generated by Tornado 4 AsyncHTTPClient during fetch

    Exceptions generated by a call to the AsyncHTTPClient resulted in an agent instrumentation error. Exceptions generated by AsyncHTTPClient are now recorded and properly handled.

  • Using gevent/eventlet on Python 3.6 resulted in a RecursionError

    Python 3.6 introduced a change to the ssl library. This change can result in a recursion error when the New Relic agent imports ssl prior to eventlet/gevent patching the ssl library (as is the case with use of the newrelic-admin script). This recursion error has been fully mitigated.

Tuesday, May 23, 2017 - 12:00 Download

Notes

This release is the same as 2.86.0.65 except it has been re-published to pypi due to an issue with 2.86.1.66.

Wednesday, May 17, 2017 - 14:00 Download

Notes

This release has been superseded. Please use version 2.86.2.68 or higher.

This release of the Python agent includes various bug fixes as described below.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Bug Fixes

  • Handle exceptions generated by Tornado 4 AsyncHTTPClient during fetch

    Exceptions generated by a call to the Tornado 4 AsyncHTTPClient resulted in an agent instrumentation error. Exceptions generated by AsyncHTTPClient are now recorded and properly handled.

  • Using gevent/eventlet on Python 3.6 resulted in a RecursionError

    Python 3.6 introduced a change to the ssl library. This change can result in a recursion error when the New Relic agent imports ssl prior to eventlet/gevent patching the ssl library (as is the case with use of the newrelic-admin script). This recursion error has been mitigated when using newrelic-admin to start applications.

Wednesday, May 3, 2017 - 12:00 Download

Notes

This release of the Python agent includes improvements to our introductory support for Tornado 4 applications as well as bug fixes.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

New Feature

  • Tornado 4 Outbound Cross Application Tracing

    Tornado 4 Cross Application Tracing is now supported for outbound web transactions. In addition to Service Maps, Tornado 4 transaction traces will now contain links to the application it called. With this update, Cross Application Tracing is now fully supported for Tornado 4 applications.

Bug Fixes

  • Django 1.10+ browser monitoring with new-style gzip middleware

    Browser monitoring was not automatically inserted when using new style Django 1.10+ gzip middleware. Browser monitoring code is now inserted as expected.

  • Using motor versions 1.X generated instrumentation errors

    Motor 1.0 removed the MotorReplicaSetClient class which resulted in the New Relic Python Agent generating an instrumentation error when attempting to access that class. The instrumentation has been fixed.

Tuesday, April 25, 2017 - 15:00 Download

Notes

This release of the Python agent includes bug fixes and improvements to the precision of the duration data recorded for transaction traces.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Improved Feature

  • Transaction trace precision

    This release improves the precision of transaction traces. Duration of functions in a transaction trace are now recorded at sub-millisecond precision.

Bug Fixes

  • Custom classmethod traces may incorrectly return the parent class

    Wrapping classmethods in classes that are subclassed could cause the subclassed classmethod to be improperly bound to the parent class. This would result in the classmethod returning an instance of the parent class when the method was called on a child class.

  • Handle incomplete Tornado coroutine traces

    Tracing a Tornado coroutine that never completed and was later garbage collected, could result in an application hang. This has been fixed.

Monday, April 17, 2017 - 15:00 Download

Notes

This release of the Python agent includes a bug fix for our introductory support for Tornado 4 applications.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Bug Fixes

  • Ending Tornado 4 transactions inside of a traced function results in an internal agent error

    Ending a Tornado 4 web transaction within a traced function previously resulted in the generation of an agent traceback. The agent now completes tracing the function before ending the transaction, resulting in the correct reporting of these transactions to New Relic.

Wednesday, March 15, 2017 - 14:00 Download

Notes

This release of the Python agent improves our introductory support for Tornado 4 applications by adding Cross Application Tracing for web transactions that are sent to a Tornado 4 application.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

New Feature

  • Tornado 4 applications will now appear in Service Maps

    Tornado 4 Cross Application Tracing is now supported for inbound web transactions. In addition to Service Maps, the calling application's APM will now have links to the Tornado 4 application it called in the External Services tab and in Transaction Traces.

Bug Fixes

  • Record exceptions outside of view handlers in Django 1.10

    Unhandled exceptions that occurred outside of a view handler in Django 1.10 were not reported. In addition to middleware exceptions, these unhandled exceptions can be generated when a view handler returns a TemplateResponse and rendering that template would result in an exception.

  • Consistent WSGI/Application and WSGI/Response segments

    Prior to this release, the agent would group segments under WSGI/Application and WSGI/Response differently, depending on whether or not browser monitoring was enabled. This has now been made consistent.

  • Improved New Relic WSGI middleware behavior

    The New Relic agent is now resilient when called by non-conforming middleware. Transactions will continue to be reported normally when the New Relic agent is called by WSGI middleware that does not call the close() method as described in the PEP 333 specification.

Monday, February 27, 2017 - 15:15 Download

Notes

This release of the Python agent is a hotfix release to address a problem with the Tornado 4 instrumentation for curl_httpclient introduced in our last release (v2.80.0.60). Under the circumstances described below, calling CurlAsyncHTTPClient.fetch_impl() could result in an agent error.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from our download site.

Bug Fix

  • Fix CurlAsyncHTTPClient.fetch_impl() instrumentation

    If fetch_impl() was called by passing the request argument positionally, but passing callback as a keyword argument, then the agent would throw an error. In practice, this only affected customers who implemented a custom version of fetch_impl(), but for those affected customers, this is now fixed.

Thursday, February 23, 2017 - 13:15 Download

Notes

This release of the Python agent enhances our introductory support for Tornado 4, most notably by adding support for tornado.curl_httpclient.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

New Features

  • Tornado 4 curl_httpclient support

    Previously, the agent's Tornado 4 instrumentation only supported the default tornado.simple_httpclient. With this release, support has been added for tornado.curl_httpclient as well.

  • Tornado 4 ZeroMQ IOLoop support

    Using ZMQIOLoop in place of the default Tornado IOLoop is now supported for Tornado 4 applications.

Improved Feature

  • Improved transaction names for Django REST Framework

    When using the Python agent with Django REST Framework and Python 3, function-based views wrapped with the rest_framework.decorators.api_view decorator would result in transactions with names based on the decorator (WrappedAPIView.handler) rather than names based on the original view function. (This did not affect applications running with Python 2.)

    With this release, the transaction names for these wrapped views are now based on the name of the original view function in both Python 2 and Python 3.

Bug Fix

  • End transactions correctly with Tornado 4 @asynchronous decorator

    When the agent records a transaction for a Tornado 4 RequestHandler method that is decorated with the @tornado.web.asynchronous decorator, the transaction should remain open until RequestHandler.finish() is called. Prior to this release, there were some circumstances where the agent closed the transaction prematurely, resulting in transaction durations that were too short. This has now been fixed.

Pages