Python

  • Reference
  • 2min

You can send data from your Python application to Dynatrace. Python is a versatile, high-level programming language known for its readability and simplicity, often used for web development, data analysis, artificial intelligence, and scientific computing due to its extensive libraries and community support.

Capabilities

  • Injects into Python processes and supported containers automatically. Injection rules enable the exclusion or inclusion of specific processes and containers.
  • Tracks CPU usage, memory consumption, and responsiveness of Python processes in real time.
  • Monitors Python workloads running inside containers, capturing container-specific performance metrics and metadata about the container technology and environment.
  • Provides runtime metrics, including garbage collection (GC) activity, thread metrics, and loaded library versions.
  • Provides remote configuration updates that allow monitoring settings to be adjusted remotely via OneAgent. Changes are applied at runtime (without requiring a process restart when possible).
  • Generates diagnostic data for troubleshooting, including support archives accessible via the OneAgent Diagnostics UI.

See our supported technologies matrix for details on supported technologies used in conjunction with Python.

Supported Python versions

Python version
Vendor released
Vendor End of life
First supported OneAgent version
Last supported OneAgent version
Dynatrace support until
3.13
2024-10-07
2029-10-01
1.309
-
-
Supported
3.12
2023-10-02
2028-10-01
1.309
-
-
Supported
3.11
2022-10-24
2027-10-01
1.309
-
-
Supported
3.10
2021-10-04
2026-10-01
1.309
-
-
Supported
3.9
2020-10-05
2025-10-01
1.309
-
-
Supported
3.8
2019-10-14
2024-10-07
1.309
-
-
Supported

Enable Python monitoring

To activate Python monitoring

  1. Go to Settings Classic > Monitoring > Monitored technologies.
  2. Find Python in the list of supported technologies, and select Edit.
  3. Turn on Monitor Python.
  4. Create a process monitoring rule to enable deep monitoring of the selected processes.

OneAgent Python code module and OneAgent SDK for Python compatibility

The OneAgent Python code module supports applications instrumented by the OneAgent SDK for Python. Both can work together in the same application.
The Dynatrace OneAgent SDK for Python is a wrapper of the Dynatrace OneAgent SDK for C/C++.

When the Python code module is installed, it replaces Dynatrace OneAgent SDK for C/C++ internally and collects data produced by OneAgent SDK for Python. This means that traces produced by the SDK will be linked with those produced by the Python code module itself.

Limitations

  • Only the standard CPython interpreter is supported (the implementation from Python.org).
  • No-GIL (nogil) builds are not supported. The binary names of the nogil version have the t suffix, for example, Python3.13t.
  • PEP 703 - Making the Global Interpreter Lock Optional in Python is not supported.
  • Monitoring of processes with Gevent package installed in versions lower than 20.9.0 is not supported.
  • For applications creating forked child processes: The code module uses background threads. To support applications using process forking, the code module usually ensures that its background threads are shut down before a fork and restarted afterwards. The following limitations apply:
    • On Python 3.12 and newer, the Python interpreter will log a warning like DeprecationWarning: This process (pid=12345) is multi-threaded, use of fork() may lead to deadlocks in the child. This is because after the fork and before Python checks if the process is multi-threaded, the code module already has to restart its threads. If the warning only appears with the Python code module and not if it is removed, it is a false positive and can be ignored. Otherwise, it may indicate a problem in application code and should be taken seriously.
    • When forking without invoking Python fork handlers, the code module does not shut down its threads. This makes the parent process a multi-threaded process, with all the usual consequences this has for forking. For typical applications this is not relevant, but custom native extension modules calling lower-level forking APIs directly would be affected.

Additional information