Adakah Pembolehubah Global Selamat Benang dalam Kelalang?
Dalam aplikasi Flask, mengekalkan ketekalan data adalah penting apabila mengendalikan permintaan serentak. Menggunakan pembolehubah global untuk menyimpan data kongsi boleh memperkenalkan isu keselamatan rangkaian.
Penggunaan Pembolehubah Global yang Tidak Selamat
Pertimbangkan contoh berikut:
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')
Apabila berbilang pelanggan meminta laluan ini secara serentak, hasil yang dijangkakan ialah nombor unik untuk setiap pelanggan (cth., 1, 2, 3...). Walau bagaimanapun, disebabkan interleaving thread, keadaan perlumbaan berikut mungkin berlaku:
Alternatif kepada Pembolehubah Global
Untuk mengelakkan isu keselamatan benang, pertimbangkan perkara berikut alternatif:
Pertimbangan Lain
Atas ialah kandungan terperinci Adakah Pembolehubah Global Flask Selamat Benang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!