Documentation forAppOptics

Python Agent (legacy) Release Notes

AppOptics agents are no longer receiving updates. The new SolarWinds Observability Libraries can send APM data to AppOptics and are regularly updated with new features and improvements. If your components are supported by the new libraries, consider transitioning to the SolarWinds Observability Libraries for your APM needs. Alternatively, you can also consider using SolarWinds Observability as your primary APM monitoring solution.

SolarWinds Observability Libraries are not compatible with AppOptics agents. Do not use a mix of SolarWinds Observability Libraries and AppOptics agents to instrument applications that are part of a distributed trace.

5.2.0 - August 25, 2021

Return to top


  • Tagging of custom metrics


  • Support for Python 2.7 and 3.4

  • Dependency on six (Python 2/3 compatibility) module

5.1.0 - July 8, 2021

Return to top


  • Support for instrumentation of AWS Lambda functions
  • Configuration option to disable agent via the APPOPTICS_AGENT_ENABLED environment variable

5.0.0 - March 3, 2021

Return to top


  • Ability to force tracing by providing keyword argument force to Context.start_trace. This is a breaking change as the signature of Context.start_trace has been modified in a non-backwards compatible way.


  • Unit testing structure has been improved to eliminate mocking C-extension functionalities. This is a breaking change since the module was removed.

  • Agent now ships with C-extension version 10.1.0


  • requests instrumentation injects invalid X-Trace into HTTP header

  • requests instrumentation reports events with invalid edges

  • Tornado instrumentation incorrectly injects X-Trace into HTTP header when agent is in no-op mode

  • Tornado instrumentation injects incorrect X-Trace into HTTP header

  • In Python2.7, agent raises TypeError or UnicodeEncodeError when unicode objects are provided as a value to a info event

  • end_trace returns incorrect trace ID

  • WSGI instrumentation creates duplicate edges between reported events

  • When start_trace is provided with an invalid incoming X-trace, the agent does not report any events related to this request

  • start_trace raises TypeError when non-string object is provided as xtr parameter

  • When adding an info event with a non-string object as a key, the agent will report an error event instead of the info event. Non-string objects can now be reported as key (and will be converted to a string when the event is reported).

  • Agent crashes with message oboe_event_add_info: Assertion 'key' failed when a None object is provided as a key when reporting an info event


  • Project license has changed to Apache 2.0 License

4.4.0 - November 12, 2020

Return to top

  • Added: appoptics_apm is now providing Python wheels for manylinux2014 compatible platforms
  • Added: Support for Python 3.9
  • Added: Custom transaction name can now be set through APPOPTICS_TRANSACTION_NAME environment variable

4.3.1 - September 14, 2020

Return to top

  • Fix: Python runtime version is now reported without build information in agent's __Init message, C-extension library version is reported
  • Fix: Missing logging message on agent startup
  • Fix: Instrumentation of Django framework under Python 3 and uWSGI breaks depending on the order of import statements. Consult the documentation for most recent instructions on how to instrument Django applications.

4.3.0 - August 31, 2020

Return to top

  • Fix: The end_trace SDK function now returns a trace ID with sampling flag set to 00 as expected when tracing is disabled on the service level
  • Fix: The incorrect multiplication of the SampleRate value reported with the start event has been removed and SampleRate is now reported correctly
  • Fix: Configuration of tracing_mode through the INI configuration file is now honored
  • Fix: missing metrics when request of instrumented Django application is not sampled
  • Changed: Configuration values for tracing_mode have been renamed from always and never, to enabled and disabled, respectively (see Tracing Mode for current values)
  • Added: Custom transaction filtering to control tracing on a per-request basis (see Custom Transaction Filtering (Tracing Mode per Transaction) for current configuration values)

4.2.0 - July 16, 2020

Return to top

  • Upgrade: agent ships with newest C-extension version 10.0.1
  • Changed: CustomMetrics API functions custom_metrics_increment and custom_metrics_summary now have return values
  • Changed: CustomMetrics API functions custom_metrics_increment and custom_metrics_summary only accept positive integer for count parameter
  • Added: Limit maximum RPC request size to 3MB
  • Added: HTTP proxy support
  • Added: Support for Alpine Linux 3.9, 3.10, 3.11
  • Removed: Drop support for the following operating systems (due to upgrade of C-extension):
    • CentOS/RHEL 6
    • Ubuntu 12.04
    • Debian 6, Debian 7
    • Amazon Linux 2013.09

4.1.0 - Jun 17, 2020

Return to top

  • Added: Python3.8 support
  • Added: Trace ID injection into log messages
  • Fix: Missing __Init messages on agent startup
  • Added: appoptics_apm module now has __version__ attribute according to PEP 396
  • Fix: Incorrect agent startup behaviour when APPOPTICS_DEBUG_LEVEL is an empty string

4.0.0 - Apr 29, 2020

Return to top

  • Added: Python3.7 support
  • Added: Azure app service support
  • Added: Support for configurable EC2 metadata timeout
  • Fix: Renamed async to aosync to support Python3.7
  • Updated: agent configuration options changed - Consult official documentation for agent configuration options

3.5.9 - May 13, 2019

Return to top

  • Added: support for new API token format

3.4.9 - May 03, 2019

Return to top

  • Fix: upgrade to oboe 4.0.1 for agent readiness check
  • Fix: unhandled exception when running inside zip archive
  • Added: better startup message for unsupported platforms
  • Added: PID and TID to logs

3.4.8 - Jan 30, 2019

Return to top

  • Fix: broken traces caused by http client exceptions

3.4.7 - Dec 14, 2018

Return to top

  • Fix: incorrect service creation

3.4.6 - Dec 12, 2018

Return to top

  • Fix: agent always wrongly report sample source as local file

3.4.5 - Nov 23, 2018

Return to top

  • Added ability to set service key and hostname alias via configuration file
  • Added ability to disable agent logging and better logging level control. Note APPOPTICS_APM_PYTHON_DISABLE_LOGGER is no longer supported
  • Fix: middleware generating incorrect URL

3.4.4 - Nov 5, 2018

Return to top

  • Added safer processing of Django middleware settings
  • Added Django 2.1 support
  • Updated native extension which validates and automatically transformas invalid service names

3.4.3 - Oct 10, 2018

Return to top

  • Fix: safer parameter handling
  • Updated error reporting to conform to spec

3.4.2 - Oct 2, 2018

Return to top

  • Added: Agent-side sql sanitization
  • Fix: Uincode exception processing for python2
  • Updated native extension with improved network interface detection

3.4.1 - Sep 14, 2018

Return to top

  • Fix: DjangoORM should reraise application error
  • Fix: ensure reporting of transactions for unsampled requests

3.4.0 - Aug 31, 2018

Return to top

  • Added ability to install on OS X in no-op mode
  • Added appoptics_ready SDK call to check agent readiness
  • Fix: DjangoORM signature mismatch with wrapped method
  • Updated configuration log for less verbosity

3.3.1 - Aug 13, 2018

Return to top

  • Fix: installer error for linux distros without /etc/os-release file
  • Updated native extension with improved communication with AppOptics server (better host detection and optimized sending of data)

3.3.0 - Aug 13, 2018

Return to top

  • Added support for alpine distribution
  • Fix: thread-safe middleware instrumentation
  • Fix: avoid custom metrics wrong type or value caused segfault in native extension
  • Fix: references to old agent logger

3.2.0 - Jul 12, 2018

Return to top

  • Fix: custom_metrics_summary, custom_metrics_increment SDK calls. Note this is a breaking change to the SDK API, please see the updated signature for Custom Metrics
  • Fix: tornado X-trace header missing
  • Fix: middleware multi-span trace error
  • Fix: django exit event KV missing

3.1.0 - Jun 7, 2018

Return to top

  • Added support for custom transaction naming via the set_transaction_name SDK method

3.0.0 - May 2, 2018

Return to top

  • Initial release as appoptics-apm package

2.0.6 - May 2, 2018

Return to top

  • Final release to deprecate appoptics package

2.0.5 - Apr 12, 2018

Return to top

  • Added Django 1.7 support
  • Added support for Heroku
  • Fix: native extension memory leak
  • Fix: swallows backtraces when Flask is in debug mode

2.0.4 - Mar 14, 2018

Return to top

  • Add report Query Flavor KV for mysql
  • Fix: Avoid segfault related to concurrency in native extension
  • Fix: redis version [2.4.0, 2.8.0] transaction processing

2.0.3 - Nov 20, 2017

Return to top

  • Support hostname alias configuration

2.0.0b6 - Oct 7, 2017

Return to top

  • Initial AppOptics Python Agent Release