aiohttp support
Every Fern-generated Python SDK ships with opt-in support for aiohttp as an async HTTP transport. When the aiohttp optional extra is installed, the generated async client uses it automatically instead of the default httpx.AsyncClient.
This matters for SDKs that make many concurrent async API calls: httpx.AsyncClient serializes DNS lookups via asyncio.getaddrinfo under heavy concurrency, while aiohttp uses its own resolver to avoid that bottleneck.
No generator configuration is required. The [aiohttp] extra, runtime auto-detection, and CI coverage are generated for every Python SDK.
Installation
SDK users opt in by installing the aiohttp extra alongside your package:
Or with Poetry:
If a user passes a custom httpx_client to the async client constructor, auto-detection is skipped and the provided client is used as-is.
Generated dependencies
The generated pyproject.toml includes an [aiohttp] optional dependency group:
If you define your own extras via the extras configuration option in generators.yml, the built-in aiohttp extra is preserved and merged with your custom configuration.
CI testing
The generated GitHub Actions workflow runs tests in two passes so both transport paths are covered:
- Standard tests without the aiohttp extra.
- Tests marked
@pytest.mark.aiohttpwith the extra installed.
To verify the aiohttp path locally: