Changelog¶
0.1.0 (2026-08-13)¶
Initial release of grpc-client-kit.
Features¶
ChannelPool— channels pooled by their full identity (target, security, credentials, options, compression, interceptor chain); idle connections parked by gRPC core, health verdicts flag pooled channelsGrpcClient— a cheap stub factory over the pool: picks a target, asks for the matching channel, hands out a stubGrpcClientFactory— maps one settings object onto the pool, balancer, health checker and per-target interceptor chains; eager settings validation, first-health-pass gate on entry, gracefulshutdown_graceon exit- Streaming-aware interceptors — one
around_callasync-generator seam expands into all fourgrpc.aioadapter classes, and write()-style streaming calls return promptly - Canonical chain: logging, tracing, metrics, timeout, deadline budget, wait-for-ready, retry, circuit breaker — ordered so every layer sees what it needs
- Timeout as the budget of the whole call, divided between retry attempts rather than granted afresh to each one
- Deadline-budget propagation (
deadlineextra) — outgoing calls trimmed to what the caller's request has left - Wait-for-ready policy per method, with an optional deadline requirement
- Retries with budget arithmetic, idempotency whitelists, jitter and retry metrics — and a warning when a native
retryPolicywould multiply them - Circuit breaker per method and per target — half-open trials, bounded LRU state with OPEN circuits pinned, rejections reported as
status="rejected", nevererror - Client-side load balancing — round-robin, random, weighted; health-aware narrowing and passive quarantine that takes a target out of rotation on the first real transport failure
- Active
grpc.health.v1monitoring (healthextra) on the checker's own channels, withwait_until_readyand per-service probing - Uniform observability — structured logs with sensitive-metadata redaction, Prometheus metrics, OpenTelemetry spans that parent correctly, all four RPC kinds covered
GrpcClientKitErrorfamily separating the kit's own refusals from server failures, while RPC-shaped ones remainAioRpcErrors- Connectivity tuning in seconds — keepalive and reconnect backoff, part of channel identity
- TLS by default; zero-dependency core (
grpcioonly) — every integration is an opt-in extra