Avnology ID
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

On this page