Skip to content

Connection Pool API ​

The ConnectionPool (httpx.pool.Pool, re-exported as httpx.ConnectionPool) reuses plain-TCP keep-alive connections. The Client uses it internally, but you can also use it directly.

PoolConfig ​

zig
pub const PoolConfig = struct {
    maxConnections: u32 = 256,
    maxPerHost: u16 = 16,
    idleTimeoutMs: i64 = 30_000,
    maxParkedMs: i64 = 300_000,
};
FieldTypeDefaultDescription
maxConnectionsu32256Hard ceiling across all origins
maxPerHostu1616Ceiling per origin
idleTimeoutMsi6430_000Parked connections older than this are dropped
maxParkedMsi64300_000Max time a connection may stay parked. 0 disables

Pool ​

zig
var pool = httpx.ConnectionPool.init(allocator, io, .{
    .maxConnections = 100,
    .maxPerHost = 10,
    .idleTimeoutMs = 30_000,
});
defer pool.deinit();
MethodDescription
init(allocator, io, cfg)Create a pool
deinit()Purge all parked connections
acquire(host, port)Pop a healthy reusable connection, or null on miss
canPark(host, port)True when another connection may still be parked for this origin
release(host, port, socket)Return a healthy connection for reuse (drops it when caps hit)
purge()Close everything immediately
sweepExpired()Drop stale/expired entries opportunistically
parkedCount()Number of currently parked connections
statsSnapshot()Copy of pool counters

Snapshot / Stats ​

zig
pub const Snapshot = struct {
    hits: u64,
    misses: u64,
    released: u64,
    parkedNow: u64,
    droppedStale: u64,
    droppedLimit: u64,
};

Use pool.statsSnapshot() for observability. Stats.snapshot() returns the same shape.

Direct Usage Example ​

zig
const httpx = @import("httpx");

var pool = httpx.ConnectionPool.init(allocator, io, .{
    .maxConnections = 20,
    .maxPerHost = 5,
    .idleTimeoutMs = 60_000,
});
defer pool.deinit();

// Print statistics
const s = pool.statsSnapshot();
std.debug.print("hits={d} misses={d} parked={d}\n", .{ s.hits, s.misses, s.parkedNow });

// Drop expired entries without destroying the pool
pool.sweepExpired();

See Also ​

Released under the MIT License.