Cette page est affichée en anglais. Une traduction française est en cours.
ConfigsApr 25, 2026·3 min de lecture

aiohttp — Async HTTP Client and Server for Python

aiohttp provides both an asynchronous HTTP client and a full web server framework built on asyncio. It handles thousands of concurrent connections efficiently without threads.

Prêt pour agents

Staging sûr pour cet actif

Cet actif est d'abord staged. Le prompt copié demande à l'agent d'inspecter les fichiers staged avant d'activer scripts, config MCP ou config globale.

Stage only · 17/100Policy : staging
Surface agent
Tout agent MCP/CLI
Type
CLI Tool
Installation
Stage only
Confiance
Confiance : Established
Point d'entrée
aiohttp Overview
Commande de staging sûr
npx -y tokrepo@latest install a8014482-40a1-11f1-9bc6-00163e2b0d79 --target codex

Stage les fichiers d'abord; l'activation exige la revue du README et du plan staged.

Introduction

aiohttp is a mature asynchronous HTTP framework for Python built on top of asyncio. It provides both a client for making concurrent HTTP requests and a server for building web applications and APIs that handle high concurrency without thread pools, making it a foundation for many async Python projects.

What aiohttp Does

  • Provides an async HTTP client with connection pooling and session management
  • Includes a full web server framework with routing, middleware, and signals
  • Supports WebSocket connections on both client and server sides
  • Handles streaming request and response bodies for large payloads
  • Offers multipart form data parsing and file upload handling

Architecture Overview

aiohttp runs on Python's asyncio event loop. The client uses a ClientSession that maintains a connection pool with keep-alive and cookie persistence. The server maps URL patterns to async handler coroutines via a router, processes requests through a middleware chain, and supports both traditional handler functions and class-based views. Internally it uses a hand-written HTTP parser for performance.

Self-Hosting & Configuration

  • Install with pip install aiohttp and optionally aiohttp[speedups] for C extensions
  • Create a server app with web.Application() and add routes via app.router.add_get()
  • Run the server with web.run_app(app, host='0.0.0.0', port=8080)
  • Deploy behind Nginx or with Gunicorn using the aiohttp.worker.GunicornWebWorker class
  • Configure timeouts, connection limits, and SSL via TCPConnector and ClientTimeout

Key Features

  • Connection pooling with configurable limits per host and total
  • Built-in WebSocket support with ping/pong and close frame handling
  • Middleware system for auth, CORS, logging, and error handling
  • Streaming responses for serving large files without loading into memory
  • Signal hooks for application startup, shutdown, and cleanup lifecycle events

Comparison with Similar Tools

  • httpx — async client only, no server; aiohttp provides both client and server in one package
  • FastAPI — higher-level with auto-generated docs; aiohttp is lower-level with more control over the HTTP layer
  • requests — synchronous and blocking; aiohttp handles thousands of concurrent requests via asyncio
  • Tornado — similar async approach but older; aiohttp is built on the standard asyncio event loop
  • Starlette — ASGI-based and lighter; aiohttp has its own protocol implementation with more built-in features

FAQ

Q: Should I use aiohttp client or httpx? A: aiohttp client is mature and performant. httpx offers a requests-like API and HTTP/2 support. Choose based on your API preferences.

Q: Can I use aiohttp with Django or Flask? A: Not directly. aiohttp has its own server framework. Use the client portion alongside any framework for async HTTP calls.

Q: How do I handle graceful shutdown? A: Register cleanup callbacks with app.on_shutdown.append(cleanup_func). The server runs them when it receives a shutdown signal.

Q: Does aiohttp support HTTP/2? A: aiohttp currently supports HTTP/1.1. For HTTP/2, consider httpx or h2.

Sources

Fil de discussion

Connectez-vous pour rejoindre la discussion.
Aucun commentaire pour l'instant. Soyez le premier à partager votre avis.

Actifs similaires