← Cloudflare Flagship / flagship / sdk
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-flagshippip install cloudflare-flagshipNastavení
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()