Gestire un pool di connessioni nel ciclo di vita
Riutilizzi i client DB e HTTP tra le richieste.
Gestire un pool di connessioni nel ciclo di vita è una lezione MCP Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento MCP Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso MCP Academy include 4 lezioni in totale.
Le connessioni richiedono tempo
Aprire una nuova connessione al database o HTTP a ogni chiamata è lento. L'handshake aggiunge latenza, che aumenta rapidamente sotto carico. 🐢
Riutilizzare con un pool
Un pool di connessioni mantiene pronte diverse connessioni attive, ne assegna una per ogni richiesta e la recupera al termine del lavoro.
Creare il pool all'avvio
L'hook lifespan è il posto ideale: crei il pool una sola volta all'avvio del server, prima dell'esecuzione di qualsiasi strumento.
@asynccontextmanager
async def lifespan(server):
pool = await create_pool(DSN)
yield {"pool": pool}Restituirlo come stato condiviso
Qualunque valore Lei restituisca con yield dal lifespan diventa contesto condiviso, così ogni gestore può accedere allo stesso pool senza ricrearlo.
Accedervi tramite il contesto
All'interno di uno strumento, recuperi il pool dal contesto della richiesta invece di aprire ogni volta una connessione propria.
pool = ctx.request_context.lifespan_context["pool"]Prendere in prestito, usare, restituire
Acquisisca una connessione dal pool, esegua la query e lasci che venga restituita automaticamente. Il blocco with gestisce l'acquisizione e il rilascio.
async with pool.acquire() as conn:
rows = await conn.fetch(sql)Limitare le dimensioni del pool
Imposti una dimensione massima, così il pool non aprirà mai più connessioni di quante il database possa gestire, anche quando arrivano molte chiamate.
pool = await create_pool(DSN, max_size=10)Condividere anche un client HTTP
La stessa idea vale per HTTP: crei un client httpx nel lifespan e lo riutilizzi, mantenendo le connessioni attive e organizzate in pool.
client = httpx.AsyncClient()
yield {"http": client}I pool sono sicuri per i thread
Un buon pool asincrono è progettato per la concorrenza e assegna in sicurezza le connessioni a molte richieste eseguite contemporaneamente.
Fare attenzione alle perdite
Restituisca sempre ciò che prende in prestito. Una connessione che dimentica di restituire è una perdita che esaurisce lentamente il pool, fino a bloccare le chiamate.
Chiuderlo allo spegnimento
Dopo il yield del lifespan, chiuda il pool, così le connessioni vengono rilasciate correttamente quando il server si arresta.
yield {"pool": pool}
await pool.close()Verifica rapida
Dove si crea un pool di connessioni?
Riepilogo: pooling
Ha organizzato le connessioni in un pool nel lifespan: lo crea una volta, lo condivide tramite il contesto, ne prende una a ogni chiamata e lo chiude allo spegnimento. Ora si occuperà di caching e limitazione della frequenza. 🎯
Impara Python con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 30
- Lezioni
- 120
Domande Frequenti
La lezione «Gestire un pool di connessioni nel ciclo di vita» è gratuita?
Sì — il testo completo di «Gestire un pool di connessioni nel ciclo di vita» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso MCP Academy, passa a CoddyKit PRO. Il corso MCP Academy include 4 lezioni in totale.
Cosa imparerò in «Gestire un pool di connessioni nel ciclo di vita»?
Riutilizzi i client DB e HTTP tra le richieste. Eserciti MCP Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare MCP Academy?
Non è richiesta alcuna esperienza precedente. MCP Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Gestire un pool di connessioni nel ciclo di vita»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione MCP Academy?
Sì. Ogni lezione MCP Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Esporre query SQL in sicurezza
- Trasformare un'API REST in strumenti
- Gestire un pool di connessioni nel ciclo di vita
- Memorizzare nella cache e limitare il rate degli upstream