INTEGRITY Dokumentace

Python SDK

SDK pro Python poskytuje s OpenFeature kompatibilního FlagshipServerProvider pro serverové aplikace v Pythonu. Vyhodnocuje flagy přes HTTP a nepodporuje binding pro Cloudflare Workers.

Instalace

Nainstalujte pomocí uv nebo pip:

uv add cloudflare-flagship
pip install cloudflare-flagship

Nastavení

Nakonfigurujte poskytovatele pomocí ID aplikace Flagship, ID účtu Cloudflare a API token s oprávněním Flagship Evaluate nebo Flagship App Evaluate.

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"}),
)

Typy příznaků

SDK pro Python podporuje všechny typy příznaků OpenFeature. Python SDK pro OpenFeature odděluje číselné hodnoty do metod pro celá čísla a metod pro desetinná čísla.

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)

Použijte *_details metody, pokud potřebujete vyhodnocenou hodnotu, důvod, variantu nebo chybový kód.

Možnosti konfigurace

Možnost Typ Výchozí Popis
app_id str Žádné ID aplikace Flagship.
account_id str Žádné Vyžadováno s app_id.
auth_token str Žádné Bearer token přidávaný ke každému požadavku.
headers_factory Callable[[], dict[str, str]] Žádné Dynamické hlavičky pro jednotlivé požadavky.
timeout float 5.0 Časový limit požadavku v sekundách.
retries int 1 Počet opakování při dočasných chybách, maximálně 10.
retry_delay float 1.0 Prodleva mezi opakováními v sekundách, maximálně 30.0.
logging bool False Ladicí výstup na úrovni SDK zapnete prostřednictvím loggeru SDK.
cache_ttl float Žádné TTL cache v sekundách. Po nastavení hodnoty se zapne ukládání do mezipaměti.
cache_max_size int 1000 Maximální počet položek v mezipaměti před vyřazením metodou LRU (least-recently-used).

Cachování odpovědí

Serverové ukládání odpovědí do mezipaměti je ve výchozím nastavení vypnuté. Povolte je pomocí cache_ttl pokud chcete, aby opakovaná vyhodnocení stejného příznaku, typu a kontextu vyhodnocení znovu použila nedávný výsledek.

FlagshipServerProvider(
    app_id="<APP_ID>",
    account_id="<ACCOUNT_ID>",
    auth_token="<API_TOKEN>",
    cache_ttl=30.0,
    cache_max_size=1000,
)

Hodnoty v mezipaměti mohou být zastaralé, dokud nevyprší TTL. U příznaků, které se mají během aktivního rolloutu měnit, nastavte krátké TTL. Poskytovatel neukládá do mezipaměti vypnuté příznaky ani chyby.

Kontext vyhodnocení

Atributy kontextu se odesílají jako parametry URL dotazu. Podporované hodnoty jsou řetězce, celá čísla, desetinná čísla, booleovské hodnoty a datetime hodnoty. Slovníky, seznamy, n-tice a další komplexní hodnoty vyvolají InvalidContextError.

Asynchronní vyhodnocení

Asynchronní API odpovídá synchronnímu API:

enabled = await client.get_boolean_value_async("new-checkout", False, context)
details = await client.get_boolean_details_async("new-checkout", False, context)

Při ukončování v asynchronním kontextu použijte shutdown_async():

await api.shutdown_async()