HTTPx è una libreria client HTTP completamente funzionale per Python 3, che include un client a riga di comando integrato. Supporta sia HTTP/1.1 che HTTP/2 e offre API sincrone e asincrone.
Installazione e Configurazione
HTTPx si installa facilmente tramite pip:
pip install httpx
Per includere il supporto opzionale per HTTP/2, si può usare:
pip install httpx[http2]
La libreria richiede Python 3.8 o versioni successive.
Caratteristiche Principali
- API Compatibile con
requests
: Offre un’API ampiamente compatibile conrequests
. - Supporto per HTTP/1.1 e HTTP/2: Permette di utilizzare entrambe le versioni del protocollo HTTP.
- Interfacce Sincrone e Asincrone: Supporta sia la programmazione sincrona che quella asincrona.
- Richiesta Diretta a Applicazioni WSGI/ASGI: Consente di fare richieste direttamente a applicazioni WSGI o ASGI.
- Autenticazione e Cookie: Gestisce l’autenticazione e mantiene i cookie tra le sessioni.
- Decompressione e Decodifica Automatiche: Supporta la decompressione e la decodifica dei contenuti.
- Supporto per Proxy HTTP e SOCKS: Permette di effettuare richieste attraverso proxy.
Esempi di Utilizzo
Esempio di richiesta GET sincrona:
import httpx
response = httpx.get('https://www.example.org/')
print(response.status_code)
Esempio di richiesta GET asincrona:
import httpx
import asyncio
async def main():
async with httpx.AsyncClient() as client:
response = await client.get('https://www.example.org/')
print(response.status_code)
asyncio.run(main())
Prestazioni e Limitazioni
HTTPx è progettato per essere flessibile e moderno, ma le prestazioni possono variare in base all’uso sincrono o asincrono e alle specifiche del progetto. Per applicazioni che richiedono alte prestazioni di rete, la scelta tra HTTPx e altre librerie come requests
o aiohttp
dovrebbe essere basata sulle esigenze specifiche del progetto.
Best Practices
- Utilizzare l’API asincrona di HTTPx per applicazioni ad alte prestazioni o con molti I/O.
- Gestire le eccezioni e controllare i codici di stato delle risposte per una programmazione robusta.
- Utilizzare ambienti virtuali Python per gestire le dipendenze del progetto.
Conclusioni e Prospettive Future
HTTPx rappresenta un passo avanti nell’ecosistema dei client HTTP in Python, offrendo un’alternativa moderna e flessibile a requests
, con il supporto aggiunto per HTTP/2 e API asincrone. La sua crescente popolarità e l’enfasi sulla programmazione asincrona lo rendono una scelta interessante per progetti futuri che richiedono capacità di rete avanzate o supporto per le ultime versioni dei protocolli HTTP.