ในแอปพลิเคชันของฉันสถานะของวัตถุทั่วไปจะเปลี่ยนไปโดยการร้องขอและการตอบสนองขึ้นอยู่กับสถานะ
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 และอื่น ๆ หากมีการร้องขอจากลูกค้าที่แตกต่างกัน 100 รายพร้อมกันอาจเกิดข้อผิดพลาดหรือไม่? ผลลัพธ์ที่คาดหวังคือลูกค้าที่แตกต่างกัน 100 รายแต่ละรายจะเห็นหมายเลขที่ไม่ซ้ำกันตั้งแต่ 1 ถึง 100 หรือจะเกิดเหตุการณ์เช่นนี้:
- แบบสอบถามลูกค้า 1
self.param
เพิ่มขึ้นทีละ 1 - ก่อนที่จะดำเนินการคำสั่ง return เธรดจะสลับไปที่ไคลเอนต์ 2
self.param
จะเพิ่มขึ้นอีกครั้ง - เธรดจะเปลี่ยนกลับไปที่ไคลเอนต์ 1 และไคลเอ็นต์จะส่งคืนหมายเลข 2 เช่น
- ตอนนี้เธรดย้ายไปที่ไคลเอนต์ 2 และส่งคืนหมายเลข 3 ให้เขา / เธอ
เนื่องจากมีลูกค้าเพียงสองรายผลลัพธ์ที่คาดหวังคือ 1 และ 2 ไม่ใช่ 2 และ 3 จึงถูกข้ามไป
สิ่งนี้จะเกิดขึ้นจริงหรือไม่เมื่อฉันขยายแอปพลิเคชันของฉัน ฉันควรพิจารณาทางเลือกใดบ้างสำหรับตัวแปรส่วนกลาง