Example usage of the Python SDK
A brief code example of how to use the Optimizely Feature Experimentation Python SDK to evaluate feature flags, activate A/B tests, or feature tests.
Once you have installed an SDK, import the Optimizely Feature Experimentation library into your code, get your Optimizely Feature Experimentation project's datafile, and instantiate a client. Then, you can use the client to evaluate flag rules, including A/B tests and flag deliveries.
This example demonstrates the basic usage of each of these concepts:
-
Evaluate a flag with the key
product_sort
using the Decide method. As a side effect, the Decide function also sends a decision event to Optimizely Feature Experimentation to record that the current user has been exposed to the experiment. -
Conditionally execute your feature code. You have a couple of options:
- Fetch the flag enabled state, then check a configuration variable on the flag called
sort_method
. The SDK evaluates your flag rules and determines what flag variation the user is in, and therefore which sort method variable they should see. - Fetch on the flag variation, then run 'control' or 'treatment' code.
- Use event tracking to track an event called
purchased
. This conversion event measures the impact of an experiment. Using the Track Event method, the purchase is automatically attributed back to the running A/B test for which we made a decision. The SDK sends a network request to Optimizely Feature Experimentation using the customizable event dispatcher so Optimizely can count it in your results page.
from optimizely import optimizely
# Instantiate an Optimizely client
optimizely_client = optimizely.Optimizely(sdk_key = "<Your_SDK_Key>")
# create a user and decide a flag rule (such as an A/B test) for them
user = optimizely_client.create_user_context("user123", {"logged_in": True})
decision = user.decide("product_sort")
# did the decision fail with a critical error?
try:
variation_key = decision.variation_key
except:
print("decision error: {}".format(decision.reasons))
# execute code based on flag enabled state
enabled = decision.enabled
if enabled:
# get flag variable values
sort_method = decision.variables["sort_method"]
# or execute code based on flag variation
if variation_key == 'control':
pass
# Execute code for variation A
elif variation_key == 'treatment':
pass
# Execute code for variation B
else:
pass
# Execute code for users who don't qualify for the experiment
# Track a user event
user.track_event("purchased")
Updated 11 months ago