---
title: python-agent-101700
source: https://docs.newrelic.com/docs/release-notes/agent-release-notes/python-release-notes/python-agent-101700
---

## Notes

This release of the Python agent adds support for the following:

-   Custom tasks in [Celery](https://pypi.org/project/celery/)
-   [Graphene-Django](https://pypi.org/project/graphene-django/) monitoring
-   Middleware filtering in [Django](https://pypi.org/project/django/)
-   AWS Bedrock [Converse](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/bedrock-runtime/client/converse.html) API
-   W3CTraceParent header sampled flag

This release also provides the following fixes:

-   Safeguards for the deepest unique path in GraphQL
-   Safeguards for web URL request parsing
-   Fallback for ElasticSearch and GraphQL when `trace.settings==None`
-   Remove `options` method from async ElasticSearch client list

Install the agent using `easy_install/pip/distribute` via the [Python Package Index](https://pypi.python.org/pypi/newrelic) or download it directly from the [New Relic download site](https://download.newrelic.com/python_agent/release).

## New features

-   Adds support for custom tasks in Celery

    -   Add monitoring support for custom task classes in [Celery](https://pypi.org/project/celery/).  Previously, only tasks using the default task class were able to be monitored.  Note: This version of the Python agent will no longer support Celery versions less than [v5.2.0](https://github.com/celery/celery/releases/tag/v5.2.0).

-   Adds support for Graphene-Django

    -   Add monitoring support for synchronous schemas created with [Graphene-Django](https://pypi.org/project/graphene-django/).  Previously, schemas created with Graphene-Django would only be partially monitored, resulting in missing [GraphQL](https://pypi.org/project/graphql-core/) related attributes.

-   Adds support for middleware filtering in Django

    -   Users are now able to filter which [Django](https://pypi.org/project/django/) middleware to monitor.  There are now [three additional settings](https://docs.newrelic.com/docs/apm/agents/python-agent/configuration/python-agent-configuration/#middleware-filters):

        -   `instrumentation.middleware.django.enabled` (Default is `true`)
        -   `instrumentation.middleware.django.exclude`
        -   `instrumentation.middleware.django.include`

    See the [Django Middleware Filtering page](https://docs.newrelic.com/docs/apm/agents/python-agent/supported-features/django-middleware-filtering/) for more information and examples.

-   Adds support for AWS Bedrock Converse API

    -   Add monitoring support for non-streaming [Converse](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/bedrock-runtime/client/converse.html) API. This includes support for `converse` chat completion calls made using `boto3` and `aioboto3` clients.

-   Adds support for W3CTraceParent header sampled flag

    -   When an upstream service sends the W3CTraceParent header with the sampling flag set, New Relic will take into account that sampling decision when deciding whether the current transaction will be sampled.

-   Added support for sampling decisions based on whether the remote parent is sampled

    -   Added support for two new configuration options:

        -   `distributed_tracing.sampler.remote_parent_sampled`
        -   `distributed_tracing.sampler.remote_parent_not_sampled`

    -   `default` is the default behavior and behaves as it did before this change (it passes the sampling decision to the adaptive sampling algorithm to determine whether the transaction will be sampled).

    -   `always_on` means that the trace that has a remote parent sampled or remote parent not sampled will always be sampled.

    -   `always_off` means that the trace that has a remote parent sampled or remote parent not sampled will never be sampled.

## Bug fixes

-   Add safeguard for deepest unique path in GraphQL

    -   Some users were experiencing issues with the deepest unique path in [GraphQL](https://pypi.org/project/graphql-core/) not being generated due to a field name returning `None`. This issue has been fixed.

-   Add safeguard for web request parsing

    -   Some users experienced a parsing error when `request_uri` was malformed or contained invalid characters.  This can happen at this point if the `request_uri` in the request header is invalid and does not match the (valid) URL originally given.  While this safeguard has now been put in place in New Relic, `urllib` has resolved this issue for versions of Python released after Jan 31, 2025.

-   Fix crash in ElasticSearch and GraphQL when `trace.settings==None`

    -   In cases where `trace.settings` is `None`, the instrumentation for ElasticSearch crashed the application.  A `global_settings` fallback has been put in place.  This also resolves the same issue found in GraphQL.

-   Remove `options` method from async ElasticSearch client list

    -   The previous instrumentation of ElasticSearch caused a crash because `options` was in the list of async methods.  This method is no longer wrapped in a `DatastoreTrace` since it is not one that conducts any datastore operations/requests.

## Support statement

We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read [more](https://docs.newrelic.com/docs/new-relic-solutions/new-relic-one/install-configure/update-new-relic-agent/) about keeping agents up to date.

See the New Relic Python agent [EOL policy](https://docs.newrelic.com/docs/apm/agents/python-agent/getting-started/python-agent-eol-policy/) for information about agent releases and support dates.
