SDKsPython SDK
Configuration
Advanced configuration for the Python SDK including async support, retry policies, and custom HTTP clients.
Configuration
Sync vs async
The SDK provides both synchronous and asynchronous clients with identical APIs.
# Synchronous (blocking)
from avnology_id import AvnologyId
client = AvnologyId(base_url="https://api.id.avnology.com", api_key="ak_live_...")
users = client.admin.list_users()
# Asynchronous (non-blocking)
from avnology_id import AsyncAvnologyId
client = AsyncAvnologyId(base_url="https://api.id.avnology.com", api_key="ak_live_...")
users = await client.admin.list_users()Custom httpx client
import httpx
custom_client = httpx.Client(
timeout=15.0,
limits=httpx.Limits(max_connections=100, max_keepalive_connections=20),
transport=httpx.HTTPTransport(retries=3),
)
client = AvnologyId(
base_url="https://api.id.avnology.com",
api_key="ak_live_...",
http_client=custom_client,
)Retry configuration
client = AvnologyId(
base_url="https://api.id.avnology.com",
api_key="ak_live_...",
retries=5,
retry_delay=0.5, # Initial delay (seconds)
retry_max_delay=30.0, # Maximum delay cap
retry_status_codes=[429, 502, 503, 504],
)Context manager
The client can be used as a context manager to ensure connections are properly closed.
# Sync
with AvnologyId(base_url="...", api_key="...") as client:
users = client.admin.list_users()
# Async
async with AsyncAvnologyId(base_url="...", api_key="...") as client:
users = await client.admin.list_users()Request hooks
def on_request(request: httpx.Request):
request.headers["X-Correlation-ID"] = str(uuid.uuid4())
def on_response(response: httpx.Response):
remaining = response.headers.get("RateLimit-Remaining")
if remaining and int(remaining) < 10:
logger.warning(f"Rate limit approaching: {remaining} remaining")
client = AvnologyId(
base_url="https://api.id.avnology.com",
api_key="ak_live_...",
on_request=on_request,
on_response=on_response,
)See also
- Python SDK index -- Quick start
- Error types -- Exception classes