Flask ではグローバル変数はスレッドセーフですか?
Flask アプリケーションでは、同時リクエストを処理するときにデータの一貫性を維持することが重要です。グローバル変数を使用して共有データを保存すると、スレッドの安全性の問題が発生する可能性があります。
グローバル変数の安全でない使用
次の例を考えてみましょう:
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')
複数のクライアントがこのルートを同時に要求した場合、期待される結果は各クライアントに固有の番号 (例: 1、2、 3...)。ただし、スレッド インターリーブにより、次の競合状態が発生する可能性があります。
グローバル変数の代替
スレッドセーフを回避するため問題がある場合は、次の代替案を検討してください:
その他の考慮事項
以上がFlask のグローバル変数はスレッドセーフですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。