Python SDK は、サーバーサイドの Python アプリケーション向けに、OpenFeature 互換の FlagshipServerProvider を提供します。フラグは HTTP 経由で評価し、Cloudflare Workers の binding には対応していません。
uv または pip でインストールします。
uv add cloudflare-flagshippip install cloudflare-flagshipFlagship のアプリ ID、Cloudflare のアカウント ID、および Flagship Evaluate または Flagship App Evaluate 権限を持つ API トークン でプロバイダーを設定します。
from openfeature import api
from openfeature.evaluation_context import EvaluationContext
from flagship import FlagshipServerProvider
api.set_provider(
FlagshipServerProvider(
app_id="<APP_ID>",
account_id="<ACCOUNT_ID>",
auth_token="<API_TOKEN>",
)
)
client = api.get_client()
enabled = client.get_boolean_value(
"new-checkout",
False,
EvaluationContext(targeting_key="user-42", attributes={"plan": "enterprise"}),
)Python SDK は、OpenFeature のすべてのフラグ型に対応しています。Python の OpenFeature SDK では、数値は integer 用と float 用のメソッドに分かれます。
enabled = client.get_boolean_value("new-checkout", False, context)
variant = client.get_string_value("homepage-hero", "control", context)
limit = client.get_integer_value("upload-limit", 10, context)
rate = client.get_float_value("sample-rate", 0.1, context)
config = client.get_object_value("ui-config", {"theme": "light"}, context)解決された値、reason、variant、エラーコードが必要なときは *_details メソッドを使います。
| オプション | 型 | デフォルト | 説明 |
|---|---|---|---|
app_id |
str |
None | Flagship のアプリ ID。 |
account_id |
str |
None | app_id とあわせて必須です。 |
auth_token |
str |
None | すべてのリクエストに付ける Bearer トークンです。 |
headers_factory |
Callable[[], dict[str, str]] |
None | リクエストごとに動的に付けるヘッダーです。 |
timeout |
float |
5.0 |
リクエストのタイムアウト(秒)です。 |
retries |
int |
1 |
一時的なエラー時の再試行回数です。上限は 10 です。 |
retry_delay |
float |
1.0 |
再試行の間隔(秒)です。上限は 30.0 です。 |
logging |
bool |
False |
SDK のロガー経由で SDK レベルのデバッグ出力を有効にします。 |
cache_ttl |
float |
None | キャッシュの TTL(秒)です。設定するとキャッシュが有効になります。 |
cache_max_size |
int |
1000 |
キャッシュ件数の上限です。超えると最も使われていないエントリから削除されます。 |
サーバーサイドのレスポンスキャッシュはデフォルトでオフです。同じフラグ、型、評価コンテキストに対する繰り返し評価で直近の結果を再利用したい場合は、cache_ttl で有効にします。
FlagshipServerProvider(
app_id="<APP_ID>",
account_id="<ACCOUNT_ID>",
auth_token="<API_TOKEN>",
cache_ttl=30.0,
cache_max_size=1000,
)キャッシュされた値は、TTL が切れるまで古いままになることがあります。アクティブなロールアウト中に変わるフラグでは、TTL を短くしてください。無効化されたフラグとエラーは、プロバイダーはキャッシュしません。
コンテキスト属性は URL のクエリパラメーターとして送られます。対応する値は文字列、整数、浮動小数点数、真偽値、datetime です。辞書、リスト、タプル、その他の複雑な値は InvalidContextError を送出します。
非同期 API は同期 API と同じ形です。
enabled = await client.get_boolean_value_async("new-checkout", False, context)
details = await client.get_boolean_details_async("new-checkout", False, context)非同期コンテキストでシャットダウンするときは shutdown_async() を使います。
await api.shutdown_async()