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.
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.
Comprehensive end-to-end transaction tracing for requests to web services, remote services, message queues, databases, and others. For more information, see Services.
Third-party vulnerability detection. For more information, see Runtime Vulnerability Analytics.
OpenTelemetry support for capturing traces. For more information, see Instrument your Python application with OpenTelemetry.
OneAgent SDK for custom tracing.
If you already use the OneAgent SDK for Python or OneAgent SDK Python auto-instrumentation, we recommend migrating to enable auto-instrumentation using OneAgent for Python.
See our supported technologies matrix for details on supported technologies used in conjunction with Python.
To activate Python monitoring
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.
The Python code module can capture Python stack traces in the background for the method hotspots feature.
Requires Python version 3.12+.
In the following cases, the OneAgent Python code module must be switched to non-forkable mode:
To switch to non-forkable mode, set the environment variable DT_PYTHON_FORKABLE to 0. After setting the environment variable, restart the application. Also make sure to check the limitations section below.
exec system call.Some opt-in features of the Python agent related to trace linking are designed with specific use cases in mind, and the agent doesn't automatically detect if actual usage matches those use cases.
These features are Python queue, Python threading, and Python subprocess.
Use this feature to trace task flow between producers and consumers using Python’s standard queue.Queue library.
Enable it if the following applies:
queue.Queue to distribute tasks or similar units of work between producers and consumers.get).Do not enable it in case:
queue.Queue.Use this feature to continue traces between threads in Python applications. When a new thread is started using Thread.start, enabling this feature creates a link from the invoking thread to the newly created one.
Enable it if the following applies:
Do not enable it in case:
concurrent.futures to establish the trace link.Use this feature to create a trace link between a parent process and a subprocess launched from it. This ensures that trace context is preserved when a subprocess is started during the handling of a traced request.
Enable it if the following applies:
Do not enable it in case:
concurrent.futures process to establish the trace link.When the monitored application fails to meet the requirements for a feature across all usages of the respective API(s), typical problems include unrelated traces being linked together, unrelated internal background operations being associated with traces, traces becoming excessively large, or having unexpectedly long durations. Also, the OpenTelemetry or Python SDK features may unexpectedly capture or suppress certain spans.
t suffix, for example, Python3.13t.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.