SDK ya Python
Mteja wa seva kwa mifumo ya nyuma ya Python, bila chochote nje ya maktaba ya kawaida. Kila wito humtaja mtumiaji, kwa sababu mchakato mmoja huwahudumia wengi.
Ilipochapishwa
prodantix-sdk on PyPI. Requires Python 3.9 or newer.
Sakinisha
pip install prodantix-sdkKila wito humtaja mtumiaji
Mteja wa kivinjari anaweza kukumbuka ni nani anayemtumia; seva haiwezi. Kwa hivyo kitambulisho cha mtumiaji ni hoja ya kwanza katika capture, identify, group na usomaji wa kikasha. Hiyo ndiyo tofauti pekee ya umbo ikilinganishwa na wateja wa kivinjari na simu.
import os
from prodantix import Client
client = Client(
api_key=os.environ["PRODANTIX_PUBLIC_KEY"],
host="https://eu.api.prodantix.com",
)
client.capture("user-123", "order.completed", properties={"total": 42, "currency": "XAF"})
client.identify("user-123", set_props={"plan": "pro"})
client.group("user-123", "company", "acme", properties={"seats": 10})
for message in client.get_inbox("user-123"):
...
client.mark_message_read("user-123", "message-id")Bendera za mbali na za ndani
Ukaguzi wa mbali huuliza seva na ndio wenye mamlaka. Ukaguzi wa ndani hutathmini picha iliyohifadhiwa ya sheria ndani ya mchakato wenyewe, bila safari ya kwenda na kurudi kwa kila wito, na hicho ndicho njia yenye shughuli nyingi inahitaji.
# Remote: asks the server, and is the authoritative answer.
if client.is_feature_enabled("user-123", "new-checkout"):
...
# Local: evaluated in process from a cached snapshot, no round trip per call.
if client.is_feature_enabled_local("user-123", "new-checkout", properties={"plan": "pro"}):
...
every_flag = client.get_all_flags("user-123")
# Every per-flag read records one $feature_flag_called exposure.
variant = client.get_variant("user-123", "new-checkout")
if variant and variant["key"] == "treatment":
...
# A flag targeting a cohort reads the user's memberships from the store;
# pass cohorts=[...] to skip the lookup.
if client.is_feature_enabled_local("user-123", "members", cohorts=["<cohort id>"]):
...
# With stream_flags=True the client holds a Socket.IO subscription and refetches
# the snapshot when a flag changes, instead of waiting for the 30s poll.
client = Client(api_key=os.environ["PRODANTIX_PUBLIC_KEY"], host="https://eu.api.prodantix.com", stream_flags=True)Uwasilishaji na kufunga
Matukio huingia kwenye foleni salama kwa nyuzi, na mtumaji wa chinichini huyapeleka kwa mafungu, kwa hesabu au kwa kipima muda, lolote linalotangulia. Tumia mteja kama msimamizi wa muktadha, na fungu la mwisho hutumwa wakati kizuizi kinapoisha.
with Client(api_key=..., host=...) as client:
client.capture("user-123", "page.viewed")
# the final batch is flushed here
# Without the context manager, flush and stop the background flusher yourself.
client.shutdown()| Argument | Default | Purpose |
|---|---|---|
| api_key | required | Public project key (pdx_pub_…) |
| host | required | Ingest base URL |
| flags_host | host | Base URL for the flags and inbox endpoints |
| flush_at | 20 | Queue size that triggers an immediate flush |
| flush_interval_s | 10.0 | Background flush cadence; 0 or less disables the timer |
| max_queue_size | 1000 | Cap; the oldest events are dropped on overflow |
| max_retries | 3 | Delivery retry attempts |
| request_timeout_s | 10.0 | Per-request timeout |
| default_properties | None | A dict or a callable merged into every event |
| on_error | no-op | Called with any capture or background error |
| stream_flags | False | Hold a Socket.IO subscription to flag changes and refetch the snapshot on push |
| socket_factory | stdlib client | Builds the websocket the flag stream uses; the test seam |