Context local e sicurezza dei thread
Scopra come i proxy restano corretti tra le richieste.
Context local e sicurezza dei thread è una lezione Flask 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 Flask Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Flask Academy include 4 lezioni in totale.
La domanda fondamentale
Come può un unico oggetto globale request rimanere corretto quando molti visitatori accedono contemporaneamente all’app? La risposta sono i locali del contesto.
Sembrano globali
Oggetti come request e g sembrano normali globali importati una volta sola. In realtà sono proxy speciali, non variabili condivise ordinarie.
from flask import requestI proxy puntano in base al contesto
Un proxy inoltra ogni accesso all’oggetto reale del contesto corrente. Ogni richiesta vede i propri dati attraverso lo stesso import.
Locali del contesto
Flask chiama questi elementi context locals. Si comportano come locali del thread, ma si basano sul contesto attivo, quindi le richieste concorrenti non entrano mai in conflitto.
Sicurezza dei thread
Due thread che gestiscono due richieste ricevono ciascuno il proprio contesto associato. Pertanto, request in un thread non mostra mai i dati dell’altro thread.
Oltre i thread
Le versioni moderne di Flask usano contextvars, quindi l’isolamento è garantito anche per greenlet e attività asincrone, non solo per i thread del sistema operativo.
Un import, molti valori
Per questo un singolo import all’inizio del file è sicuro. Il proxy si risolve in un oggetto reale diverso per ogni richiesta.
Attenzione al background
Se avvia un thread semplice da una vista, questo non dispone di alcun contesto. L’accesso a request fallisce, a meno che non attivi personalmente un contesto.
Passare valori, non proxy
Passi a un worker in background il value effettivo di cui ha bisogno, ad esempio un ID utente, invece del proxy della richiesta, che a quel punto non sarà più disponibile.
uid = request.args.get("id")
start_job(uid)Ottenere l’oggetto reale
Le serve l’oggetto sottostante a un proxy? Utilizzi _get_current_object, ma vi ricorra raramente e solo quando è davvero necessario.
real = request._get_current_object()Perché sembra tutto semplice
I locali del contesto spiegano perché Flask sembra semplice: importa request una sola volta e vi fa affidamento, mentre il framework mantiene discretamente isolate tutte le richieste.
Verifica rapida
Verifichiamo come i proxy rimangono sicuri.
Riepilogo
I globali di Flask sono in realtà context-local proxies. Si risolvono per ogni richiesta, mantenendo isolati thread e attività asincrone, così un unico import rimane sicuro ovunque. 🎉
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 «Context local e sicurezza dei thread» è gratuita?
Sì — il testo completo di «Context local e sicurezza dei thread» è 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 Flask Academy, passa a CoddyKit PRO. Il corso Flask Academy include 4 lezioni in totale.
Cosa imparerò in «Context local e sicurezza dei thread»?
Scopra come i proxy restano corretti tra le richieste. Eserciti Flask 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 Flask Academy?
Non è richiesta alcuna esperienza precedente. Flask 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 «Context local e sicurezza dei thread»?
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 Flask Academy?
Sì. Ogni lezione Flask 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
- App context e request context
- current_app e l'oggetto g
- Context local e sicurezza dei thread
- Attivare un context in script e shell