Les variables globales sont-elles thread-safe dans Flask ?
Dans les applications Flask, le maintien de la cohérence des données est crucial lors du traitement des requêtes simultanées. L'utilisation de variables globales pour stocker des données partagées peut introduire des problèmes de sécurité des threads.
Utilisation dangereuse des variables globales
Considérons l'exemple suivant :
class SomeObj(): def __init__(self, param): self.param = param def query(self): self.param += 1 return self.param global_obj = SomeObj(0) @app.route('/') def home(): flash(global_obj.query()) render_template('index.html')
Lorsque plusieurs clients demandent cette route simultanément, le résultat attendu est un numéro unique pour chaque client (par exemple, 1, 2, 3...). Cependant, en raison de l'entrelacement des threads, la condition de concurrence suivante peut se produire :
Alternatives aux variables globales
Pour éviter les problèmes de sécurité des threads, tenez compte des éléments suivants alternatives :
Autres considérations
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!