On this page
Overview
aiohttp is an HTTP client/server framework for Python asyncio. It provides asynchronous ClientSession APIs, a web server with middleware and routing, and WebSocket support on both client and server sides.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Use ClientSession for asynchronous HTTP requests and connection reuse
aiohttp.ClientSession manages GET, POST, response bodies, and headers asynchronously and reuses connections across requests, integrating outbound HTTP I/O with the asyncio event loop.
Sources: [2]
Build HTTP servers with routing, middleware, and WebSockets
aiohttp.web.Application and route handlers provide an HTTP server model with middleware and pluggable routing. WebSockets are supported on both client and server sides.
Sources: [2]
Best fit
Fits backends that want HTTP client and lightweight async server behavior in one asyncio stack
It works well for high-concurrency outbound API calls, WebSocket connections, and lightweight service endpoints that should share the same asyncio ecosystem.
Sources: [2]
Before adoption
aiohttp 3.14.4 requires Python 3.10+; review request limits and parser changes
aiohttp 3.14.4 requires Python 3.10 or newer and its package licensing includes Apache-2.0 plus the vendored llhttp MIT license. The release adds form-field limits and parser safety fixes, so upload, form, and parser-sensitive paths deserve regression testing.
Official sources
- [1]aio-libs/aiohttp — GitHub repository(2026-10-06)
- [2]aiohttp 3.14.4 — README(2026-10-06)
- [3]aiohttp 3.14.4 — pyproject.toml(2026-10-06)
- [4]aiohttp 3.14.4 release(2026-10-06)
- [5]aiohttp license(2026-10-06)
Supplemental curator note
A key strength is covering both client and server use cases in asyncio. Reuse ClientSession for repeated requests, and make server-side body, form, and timeout limits explicit in production.
Try it in 3 steps
- 1
Install aiohttp 3.14.4
Pin the reviewed stable release. Python 3.10 or newer is required.
python -m pip install "aiohttp==3.14.4" - 2
Create a minimal localhost web server
Use a minimal version of the official server example and bind it only to localhost.
cat > aiohttp_demo.py <<'PY' from aiohttp import web async def hello(request): return web.Response(text='hello aiohttp') app = web.Application() app.add_routes([web.get('/', hello)]) web.run_app(app, host='127.0.0.1', port=8080) PY - 3
Start the server and check the response
Start the server and confirm that it returns hello aiohttp.
python aiohttp_demo.py # In another terminal: curl -fsS http://127.0.0.1:8080/
Growth
Growth trends · Last 30 days
16,569 Stars
Trend data is still being collected.
Built with
Categories and tags
Categories
GitHub data
GitHub dataView detailed GitHub data
GitHub Topics
- aiohttp
- async
- asyncio
- hacktoberfest
- http
- http-client
- http-server
- python
- Stars
- 16,569
- Forks
- 2,439
- Watchers
- 215
- Open issues
- 221
- Contributors
- 416
- Owner type
- Organization
- Primary language
- Python
- License
- Apache-2.0 AND MIT
- Repository last updated
- Oct 5, 2026
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- Dropwizard8,582 Stars
3 shared tag(s) · 2 shared category(s)
combine Jetty, Jersey, Jackson, and Metrics into a production-ready Java REST-service stack
Java - HTTPie CLI38,647 Stars
3 shared tag(s) · 1 shared category(s) · Same language
compose API requests with syntax optimized for human-readable terminal work
Python - Starlette12,655 Stars
4 shared tag(s) · 2 shared category(s) · Same language
build asynchronous Python web services from lightweight ASGI components
Python - Poem4,445 Stars
4 shared tag(s) · 2 shared category(s)
build Rust HTTP servers by composing routes, extractors, and middleware
Rust - Salvo4,438 Stars
4 shared tag(s) · 2 shared category(s)
build Rust web services with HTTP/1-3, OpenAPI, WebSockets, and integrated TLS features
Rust - Flask74,897 Stars
4 shared tag(s) · 1 shared category(s) · Same language
build Python WSGI applications with routing, request handling, and Jinja templates
Python
Report incorrect information
Tell us if any listing information is incorrect or outdated.