Notes
This release of the Python agent deprecates the old record_exception
API, replaces the error_collector.ignore_errors
setting, adds a new notice_error
API, adds expected errors functionality, improves the NewRelicContextFormatter, and fixes multiple bugs including a few potential crashes.
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.
Deprecations
Deprecated
record_exception
APIrecord_exception
has been superseded by the newnotice_error
API. The old API will forward exceptions tonotice_error
with a deprecation warning.Deprecated
error_collector.ignore_errors
settingerror_collector.ignore_errors
has been replaced witherror_collector.ignore_classes
to match other agents. Please update your config files to use the new setting. The old setting will continue to function with a deprecation warning.
New Features
Added new
notice_error
APIThis new API falls much more in line with other language agents.
It also includes expected errors functionality and a status code parameter.
To see all changes, view the documentation for this API.
Added new expected errors feature
This feature implements expected errors as documented here. To enable them, use the following new settings.
Improved Features
Improved NewRelicContextFormatter
Adds new
log_record_to_dict
function to separate logic for JSON serialization and converting to a dictionary, enabling custom formatters to access the data more easily.Custom attributes now attempt JSON serialization by default and fallback to strings, meaning dictionaries and other serializable types are now supported.
Thank you to @chrislawlor and @qvik-olli for your contributions!
error_collector.ignore_status_codes
is now configurable in server-side configurationPreviously this setting was only available in the config file, but is now available via server-side configuration.
Bug Fixes
Infinite tracing crash fix
Crashes had occurred in infinite tracing following the inclusion of some startup timeout changes in v6.0.0. These changes have been rolled back.
RuntimeInstrumentationError crash removed
Crashes occurred when a
RuntimeInstrumentationError
was reached, indicating a potential problem with existing instrumentation. The exception is now caught and replaced with error level log messages to avoid crashing applications.SQLite instrumentation consumes generator objects passed to
executemany
A generator passed to
Connection.executemany
would unexpectedly be consumed by our instrumentation. This has been corrected and generators are now properly supported.
Known Issues
Flask v2.0.0 support
Flask released a new major version recently that we do not yet support, but expect to in the near future.
Sanic support
Sanic has released large changes to the framework recently that have broken some of our instrumentation on certain versions, and can crash the agent on others. We expect to correct these issues in the near future.
Notes
This release of the Python agent includes new garbage collection runtime metrics as well as improved metrics for CPU and memory usage. This release also includes bug fixes for Uvicorn instrumentation and FIPS compliant systems.
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
Adds garbage collection runtime metrics.
Records statistics as metrics after garbage collection sweeps. This feature is disabled by default and can be enabled and configured with these settings.
Improved Features
Improved CPU metric sampling.
Adds separate metrics for user time, system time, and total time as well as utilization as a percentage for each.
Improved memory metric sampling.
Adds memory utilization as a percentage, and adds PID to metrics to allow faceting in NRQL queries.
Increased custom attribute limit from 64 to 128.
The custom attribute limit affects user added attributes on spans, events, and transactions.
Bug Fixes
Fixed a TypeError with Uvicorn and unix sockets.
Fixed a crash when using a FIPS compliant system with Cross Agent Tracing enabled.
Notes
This release of the Python agent includes a bug fix for httpx 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
httpx process response attribute error
In httpx instrumentation, an attribute error was occurring during processing of the HTTP response. This issue was resolved in this release.
Notes
This release of the Python agent adds instrumentation for httpx, removes support for Python 3.5, and includes performance enhancements.
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.
Deprecations
Removed support for Python 3.5
Python 3.5 is no longer supported by the agent. Please consider upgrading your application to a supported version of Python in order to continue to receive updates to the Python Agent.
New Features
Added httpx instrumentation
External web service requests made with the httpx client module will now be automatically instrumented.
Added Django ASGI instrumentation
Django's ASGI mode will now be supported through automatic instrumentation.
Improved Features
Improved startup performance
The loading of urllib3 is now delayed and happens on a background thread which improves overall initialization time.
Bug Fixes
Non-ASCII HTTP referers crash fix
Crashes had occurred when non-ASCII HTTP referers were passed to ASGI applications. This crash no longer occurs as of this release.
Notes
This release of the Python agent includes minor bug fixes.
Bug Fixes
- Fix incorrect wrapper in grpc instrumentation.
_MultiThreadedRendezvous._next
was wrapped with the instrumentation designed for _MultiThreadedRendezvous.result
. This issue has been resolved as of this agent version.
Notes
This release of the Python agent updates transaction naming for Starlette and FastAPI, and includes 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
Updated transaction naming for middleware in Starlette and FastAPI
The transaction naming hierarchy has been updated for Starlette and FastAPI applications. The web transaction name is named after the route handler, or after middleware if an exception is raised in the middleware.
Bug Fixes
RuntimeError for imports occurring on a background thread
A RunTimeError was being raised in the event of imports occurring on a background thread during iteration over sys.modules. This issue has been resolved in this agent version.
Fixed region aware license key default host setting
This agent version contains a fix for setting the default host value based on the license key for EU license keys. Setting the host manually will still override the default host value set by the license key.
Notes
This release of the Python agent adds instrumentation for Starlette and FastAPI.
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.
Deprecations
Python 3.5 has been deprecated
Python 3.5 has reached end of life and support will be dropped in a future release. Using the agent with Python 3.5 will generate a deprecation warning. Updating Python versions is recommended.
New Features
Adds Starlette framework instrumentation
Starlette applications will now be automatically instrumented. Transaction data will be collected and recorded for application routes, background tasks, exception handlers, and installed middleware. Exception logging has also been added.
Adds FastAPI framework instrumentation
FASTAPI applications will also now be automatically instrumented. See above for instrumentation details.
Bug Fixes
Fix deprecation warning for find_loader in python 3
Using the agent no longer generates a deprecation warning for find_loader. The call to find_loader has been replaced with find_spec.
Notes
This release of the Python agent adds support for Python 3.9 and includes 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.
Bug Fixes
Duplicate warnings were logged repeatedly when using the agent with Python 3
The agent internally suppressed any warnings generated when data was sent via HTTP to New Relic in a way that caused the warning filters to mutate. This caused the cache of already printed warnings to be cleared, resulting in duplicate warnings after every data harvest. The agent no longer mutates the process warning filters on a background thread, resulting in consistent warning behavior.
AttributeError when passing an inactive transaction into ExternalTrace.generate_request_headers
When passing an inactive transaction into ExternalTrace.generate_request_headers, an AttributeError was generated. This agent version contains additional validation for the transaction argument in ExternalTrace.generate_request_headers.
The infinite tracing host configuration value did not have sufficient validation
When passing a URL or other invalid host to the infinite tracing host configuration, the agent accepted this value unchecked to use in the host parameter for later connections via grpc. The agent now validates this configuration and attempts to correct for invalid hosts if it is able to detect the host. If a host is not detected, the agent automatically falls back to infinite tracing disabled and logs an error.
Notes
This release of the Python agent adds instrumentation for uvicorn and asyncpg.
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
Adds uvicorn instrumentation
ASGI applications are now automatically wrapped when using the uvicorn ASGI server.
Adds asyncpg instrumentation
Support has been added for recording database transactions when using asyncpg database client module for PostgresSQL.
Improved Features
Adds db.operation attribute
A new attribute, db.operation, was introduced for datastore traces. This value is recorded only when db.statement is not reported, and represents an operation triggered by methods other than running a DB statement.
Notes
This release of the Python agent adds new ASGI apis and upgrades wrapt.
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
Adds support for ASGI applications via built in APIs
ASGI applications can now be timed via middleware-like API calls. Browser monitoring JS is automatically injected into HTML pages by the ASGI browser monitoring middleware for instrumented applications. See the asgi_application docs for details on API usage.
Upgrades wrapt to 1.12.1
This version of the agent ships with wrapt 1.12.1.