Skip to content

Commit f644d91

Browse files
Document Python agentless Feature Flags delivery (DataDog#38998)
* docs: document Python agentless Feature Flags delivery * docs: link Python Remote Configuration setup
1 parent 9cfb30d commit f644d91

4 files changed

Lines changed: 81 additions & 46 deletions

File tree

‎hugo/content/en/feature_flags/concepts/configuration_sources.md‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ To get started with agentless delivery, use one of these minimum versions:
4848
| Java `dd-openfeature` and `dd-java-agent` | 1.65.0 |
4949
| Node.js `dd-trace` v5 | 5.116.0 |
5050
| Node.js `dd-trace` v6 | 6.5.0 |
51+
| Python `ddtrace` | 4.14.0 |
5152

5253
Java CDN delivery requires `dd-openfeature` and `dd-java-agent`. It does not require a Datadog Agent for flag configuration.
5354

@@ -59,11 +60,11 @@ DD_SITE={{< region-param key="dd_site" code="true" >}}
5960
DD_ENV=<YOUR_ENVIRONMENT>
6061
{{< /code-block >}}
6162

62-
Then initialize or access the Datadog OpenFeature provider in application code. See the [Java][4] or [Node.js][2] setup instructions.
63+
Then initialize or access the Datadog OpenFeature provider in application code. See the [Java][4], [Node.js][2], or [Python][5] setup instructions.
6364

6465
No configuration-source or provider-enable setting is required. Polling begins only when application code initializes or accesses the provider; installing or initializing the tracer alone does not create Feature Flags CDN traffic.
6566

66-
<div class="alert alert-warning">The initial Node.js agentless releases support configuration delivery and local flag evaluation only. They do not export evaluation metrics or exposure events. Java agentless delivery changes only the configuration source. Without a supported Datadog Agent or serverless telemetry path, Java also does not export these signals.</div>
67+
<div class="alert alert-warning">The initial Node.js agentless releases support configuration delivery and local flag evaluation only. They do not export evaluation metrics or exposure events. Java and Python agentless delivery change only the configuration source. Java and Python do not export these signals without a supported Datadog Agent or serverless telemetry path.</div>
6768

6869
### Configure agentless delivery
6970

@@ -72,7 +73,7 @@ Set `DD_SITE` to your organization's Datadog site. For the site selected on this
7273
| Environment variable | Default | Description |
7374
|---|---|---|
7475
| `DD_FEATURE_FLAGS_CONFIGURATION_SOURCE_AGENTLESS_BASE_URL` | Datadog-managed endpoint | Overrides the agentless flag configuration endpoint or base URL. See [Use a custom agentless endpoint](#use-a-custom-agentless-endpoint). |
75-
| `DD_FEATURE_FLAGS_CONFIGURATION_SOURCE_AGENTLESS_POLL_INTERVAL_SECONDS` | `30` | Positive integer that sets the time between completed polling attempts. Java does not limit attempts, while Node.js caps values at 3600 seconds. |
76+
| `DD_FEATURE_FLAGS_CONFIGURATION_SOURCE_AGENTLESS_POLL_INTERVAL_SECONDS` | `30` | Positive integer that sets the time between completed polling attempts. Java does not limit attempts, while Node.js and Python cap values at 3600 seconds. |
7677
| `DD_FEATURE_FLAGS_CONFIGURATION_SOURCE_AGENTLESS_REQUEST_TIMEOUT_SECONDS` | `5` | Positive integer that sets the timeout for an individual configuration request. |
7778

7879
The SDK fetches configuration in the background and evaluates flags locally. Individual flag evaluations do not make network requests. The agentless source does the following:
@@ -170,3 +171,4 @@ Server Feature Flags billing is based on configuration requests made through Rem
170171
[2]: /feature_flags/server/nodejs/
171172
[3]: /feature_flags/server/
172173
[4]: /feature_flags/server/java/
174+
[5]: /feature_flags/server/python/

‎hugo/content/en/feature_flags/implementation_patterns/serverless.md‎

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ further_reading:
1818

1919
## Overview
2020

21-
The Datadog Feature Flags Java and Node.js SDKs can receive flag configuration directly from the Datadog-managed CDN. This _agentless_ configuration source simplifies onboarding because it does not require a Datadog Agent for flag configuration. It also supports serverless applications that cannot connect to a Datadog Agent.
21+
The Datadog Feature Flags Java, Node.js, and Python SDKs can receive flag configuration directly from the Datadog-managed CDN. This _agentless_ configuration source simplifies onboarding because it does not require a Datadog Agent for flag configuration. It also supports serverless applications that cannot connect to a Datadog Agent.
2222

2323
After configuration is loaded, flag evaluation happens locally in the application. The SDK does not make a network request for each evaluation.
2424

@@ -29,12 +29,13 @@ Agentless configuration delivery is available in:
2929
| Java `dd-openfeature` and `dd-java-agent` | 1.65.0 |
3030
| Node.js `dd-trace` v5 | 5.116.0 |
3131
| Node.js `dd-trace` v6 | 6.5.0 |
32+
| Python `ddtrace` | 4.14.0 |
3233

3334
Java CDN delivery requires `dd-openfeature` and `dd-java-agent`. The Java runtime must support loading `dd-java-agent` with the `-javaagent` JVM option. You can pass this option in the Java command or through `JAVA_TOOL_OPTIONS`.
3435

3536
Other server SDKs and versions earlier than those listed require Agent Remote Configuration for flag delivery.
3637

37-
<div class="alert alert-warning">The initial Node.js agentless releases load configuration and evaluate flags locally. They do not export evaluation metrics or exposure events. Java agentless delivery changes only the configuration source. Without a supported Datadog Agent or serverless telemetry path, Java also does not export these signals.</div>
38+
<div class="alert alert-warning">The initial Node.js agentless releases load configuration and evaluate flags locally. They do not export evaluation metrics or exposure events. Java and Python agentless delivery change only the configuration source. Java and Python do not export these signals without a supported Datadog Agent or serverless telemetry path.</div>
3839

3940
## Agentless architecture
4041

@@ -49,7 +50,7 @@ Use agentless delivery when the serverless runtime can make outbound HTTPS reque
4950
DD_SITE={{< region-param key="dd_site" code="true" >}}
5051
DD_ENV=<YOUR_ENVIRONMENT>{{< /code-block >}}
5152

52-
4. Initialize or access the Datadog OpenFeature provider as described in the [Java][6] or [Node.js][3] setup. This starts CDN polling. No Feature Flags enablement or source setting is required.
53+
4. Initialize or access the Datadog OpenFeature provider as described in the [Java][6], [Node.js][3], or [Python][9] setup. This starts CDN polling. No Feature Flags enablement or source setting is required.
5354
5. Store `DD_API_KEY` in the serverless platform's secret manager and expose it only to the application process.
5455

5556
The SDK polls the Datadog-managed CDN every 30 seconds by default and uses ETags for unchanged configuration. It preserves the last accepted configuration during temporary errors. If no configuration has been accepted, OpenFeature evaluations return the caller-provided default value.
@@ -90,7 +91,7 @@ Explicitly selecting `remote_config` enables the Feature Flags Remote Configurat
9091
- **API key ownership**: In agentless mode, the application owns `DD_API_KEY`. In `remote_config` mode, the Agent owns the API key.
9192
- **Flag updates**: Delivery is eventually consistent. Allow for the SDK polling interval and application startup time when testing changes.
9293
- **Last-known-good behavior**: After a configuration has been accepted, temporary network failures or malformed responses do not replace it.
93-
- **Runtime support**: Java requires Java 11 or later. For Node.js, check the tracer's runtime compatibility requirements.
94+
- **Runtime support**: Java requires Java 11 or later. For Node.js and Python, check the tracer's runtime compatibility requirements.
9495
- **Kill switch**: `DD_FEATURE_FLAGS_ENABLED` defaults to `true`. Set it to `false` to disable the provider and both configuration delivery paths. Evaluations then return caller-provided default values.
9596

9697
Datadog-managed agentless delivery is not available for Datadog for Government in these versions. Use Agent Remote Configuration on that site.
@@ -101,15 +102,15 @@ If your deployment uses `DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED`, see [Migrat
101102

102103
### AWS Lambda
103104

104-
Java and Node.js Lambda functions can use agentless configuration delivery when they run a minimum SDK version and can reach Datadog over HTTPS. Java functions must load `dd-java-agent` with `-javaagent`, either directly or through `JAVA_TOOL_OPTIONS`. A Java tracing layer can provide this setup. The Datadog Lambda Extension is not required for flag configuration.
105+
Java, Node.js, and Python Lambda functions can use agentless configuration delivery when they run a minimum SDK version and can reach Datadog over HTTPS. Java functions must load `dd-java-agent` with `-javaagent`, either directly or through `JAVA_TOOL_OPTIONS`. A Java tracing layer can provide this setup. The Datadog Lambda Extension is not required for flag configuration.
105106

106107
### Google Cloud serverless environments
107108

108-
Java workloads can use agentless configuration delivery on Java 11 or later when the runtime can load `dd-java-agent`. The Java setup for [Cloud Run Functions][7] and [Cloud Run containers][8] uses `JAVA_TOOL_OPTIONS` to set `-javaagent`. Node.js workloads require a supported tracer runtime. Both runtimes require outbound HTTPS access.
109+
Java workloads can use agentless configuration delivery on Java 11 or later when the runtime can load `dd-java-agent`. The Java setup for [Cloud Run Functions][7] and [Cloud Run containers][8] uses `JAVA_TOOL_OPTIONS` to set `-javaagent`. Node.js and Python workloads require a supported tracer runtime. All runtimes require outbound HTTPS access.
109110

110111
### Azure Functions
111112

112-
Java function apps can use agentless configuration delivery on Java 11 or later when the runtime can load `dd-java-agent`. Node.js function apps require a supported tracer runtime. Both runtimes require outbound HTTPS access. An external Datadog Agent is only required when `remote_config` is selected.
113+
Java function apps can use agentless configuration delivery on Java 11 or later when the runtime can load `dd-java-agent`. Node.js and Python function apps require a supported tracer runtime. All runtimes require outbound HTTPS access. An external Datadog Agent is only required when `remote_config` is selected.
113114

114115
### Edge runtimes
115116

@@ -130,7 +131,7 @@ Before enabling Feature Flags in production:
130131
3. Initialize the OpenFeature provider and check that it reaches a ready state.
131132
4. Change a non-production flag in Datadog and confirm that the workload receives the updated value after the polling interval.
132133
5. Confirm that your application handles caller-provided defaults if configuration is unavailable during a cold start.
133-
6. For Node.js, do not plan experimentation workflows around evaluation metrics or exposure data. For Java, configure a supported Datadog Agent or serverless telemetry path before you use these signals.
134+
6. For Node.js, do not plan experimentation workflows around evaluation metrics or exposure data. For Java and Python, configure a supported Datadog Agent or serverless telemetry path before you use these signals.
134135

135136
## Further reading
136137

@@ -144,3 +145,4 @@ Before enabling Feature Flags in production:
144145
[6]: /feature_flags/server/java/
145146
[7]: /serverless/google_cloud_run/functions/java/?tab=maven
146147
[8]: /serverless/google_cloud_run/containers/in_container/java/
148+
[9]: /feature_flags/server/python/

‎hugo/content/en/feature_flags/server/_index.md‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,11 @@ The default source does not activate Feature Flags traffic for every tracer inst
4242
| Java `dd-openfeature` and `dd-java-agent` | 1.65.0 |
4343
| Node.js `dd-trace` v5 | 5.116.0 |
4444
| Node.js `dd-trace` v6 | 6.5.0 |
45+
| Python `ddtrace` | 4.14.0 |
4546

4647
Java CDN delivery requires `dd-openfeature` and `dd-java-agent`. It does not require a Datadog Agent for flag configuration.
4748

48-
<div class="alert alert-warning">The initial Node.js agentless releases support configuration delivery and local flag evaluation only. They do not export evaluation metrics or exposure events. Java agentless delivery changes only the configuration source. Without a supported Datadog Agent or serverless telemetry path, Java also does not export these signals.</div>
49+
<div class="alert alert-warning">The initial Node.js agentless releases support configuration delivery and local flag evaluation only. They do not export evaluation metrics or exposure events. Java and Python agentless delivery change only the configuration source. Java and Python do not export these signals without a supported Datadog Agent or serverless telemetry path.</div>
4950

5051
Agentless delivery is available for the SDKs and versions listed. Other server SDKs use Agent Remote Configuration.
5152

@@ -92,11 +93,11 @@ DD_SITE={{< region-param key="dd_site" code="true" >}}
9293
DD_ENV=<YOUR_ENVIRONMENT>
9394
{{< /code-block >}}
9495

95-
No Feature Flags enablement or source setting is required. See [Java Feature Flags][10] or [Node.js Feature Flags][9] for dependency versions and language-specific initialization. Initializing or accessing the provider starts CDN polling; tracer installation and initialization alone do not.
96+
No Feature Flags enablement or source setting is required. See [Java Feature Flags][10], [Node.js Feature Flags][9], or [Python Feature Flags][11] for dependency versions and language-specific initialization. Initializing or accessing the provider starts CDN polling; tracer installation and initialization alone do not.
9697

9798
## Agent Remote Configuration
9899

99-
For Java and Node.js, set the source explicitly to retain Agent-managed delivery:
100+
For Java, Node.js, and Python, set the source explicitly to retain Agent-managed delivery:
100101

101102
{{< code-block lang="bash" >}}
102103
DD_FEATURE_FLAGS_CONFIGURATION_SOURCE=remote_config
@@ -106,7 +107,7 @@ Remote Configuration is enabled by default in Agent 7.47.0 and later. If your Ag
106107

107108
See the [Remote Configuration documentation][1] for detailed setup instructions across deployment environments.
108109

109-
Existing Java and Node.js implementations with `DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED=true` remain on Remote Configuration during a migration window. The setting is deprecated. See [Migrate from the legacy provider setting][7] to remain on Remote Configuration explicitly or move to agentless delivery.
110+
Existing Java, Node.js, and Python implementations with `DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED=true` remain on Remote Configuration during a migration window. The setting is deprecated. See [Migrate from the legacy provider setting][7] to remain on Remote Configuration explicitly or move to agentless delivery.
110111

111112
### Remote Configuration polling interval
112113

@@ -134,9 +135,9 @@ DD_VERSION=<YOUR_APP_VERSION>
134135
# See "Set Up Server-Side Flag Evaluation Metrics" documentation
135136
{{< /code-block >}}
136137

137-
<div class="alert alert-info">In the Java and Node.js versions listed above, <code>DD_FEATURE_FLAGS_ENABLED</code> defaults to <code>true</code>, so you do not need to set it. Setting it to <code>false</code> disables the provider, CDN polling, and the Feature Flags Remote Configuration subscription. Other server SDKs continue to use the activation settings documented on their language pages.</div>
138+
<div class="alert alert-info">In the Java, Node.js, and Python versions listed above, <code>DD_FEATURE_FLAGS_ENABLED</code> defaults to <code>true</code>, so you do not need to set it. Setting it to <code>false</code> disables the provider, CDN polling, and the Feature Flags Remote Configuration subscription. Other server SDKs continue to use the activation settings documented on their language pages.</div>
138139

139-
For SDKs and delivery modes that support it, see <a href="/feature_flags/guide/server_flag_evaluation_metrics/">Set Up Server-Side Flag Evaluation Metrics</a> to enable the <code>feature_flag.evaluations</code> metric. The initial Node.js agentless releases do not export evaluation metrics or exposure events. Java requires a supported Datadog Agent or serverless telemetry path to export these signals. See <a href="/feature_flags/concepts/flag_graphs/">Feature Flag Graphs</a> for more information on available graphing. See <a href="/feature_flags/guide/apm_trace_enrichment/">Set Up APM Trace Enrichment for Feature Flags</a> to attach feature flag evaluation data to APM traces for filtering and experimentation.
140+
For SDKs and delivery modes that support it, see <a href="/feature_flags/guide/server_flag_evaluation_metrics/">Set Up Server-Side Flag Evaluation Metrics</a> to enable the <code>feature_flag.evaluations</code> metric. The initial Node.js agentless releases do not export evaluation metrics or exposure events. Java and Python require a supported Datadog Agent or serverless telemetry path to export these signals. See <a href="/feature_flags/concepts/flag_graphs/">Feature Flag Graphs</a> for more information on available graphing. See <a href="/feature_flags/guide/apm_trace_enrichment/">Set Up APM Trace Enrichment for Feature Flags</a> to attach feature flag evaluation data to APM traces for filtering and experimentation.
140141

141142
## Testing with in-memory providers
142143

@@ -200,3 +201,4 @@ For percentage-based rollouts and deterministic bucketing, see [Traffic Splittin
200201
[8]: /feature_flags/concepts/configuration_sources/
201202
[9]: /feature_flags/server/nodejs/
202203
[10]: /feature_flags/server/java/
204+
[11]: /feature_flags/server/python/

0 commit comments

Comments
 (0)