Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Python SDK

最終更新 Markdown で表示Agent セットアップ

Python SDK は、サーバーサイドの Python アプリケーション向けに、OpenFeature 互換の FlagshipServerProvider を提供します。フラグは HTTP 経由で評価し、Cloudflare Workers の binding には対応していません。

インストール

uv または pip でインストールします。

uv add cloudflare-flagship
pip install cloudflare-flagship

セットアップ

Flagship のアプリ 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()

役に立ちましたか?