मेरे एप्लिकेशन में अनुरोध करने से एक सामान्य वस्तु की स्थिति बदल जाती है, और प्रतिक्रिया राज्य पर निर्भर करती है।
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 से बढ़ा हुआ है। - रिटर्न स्टेटमेंट को निष्पादित करने से पहले, क्लाइंट 2 पर थ्रेड स्विच किया जाता
self.param
है। - थ्रेड क्लाइंट 1 पर वापस जाता है, और क्लाइंट को नंबर 2, वापस दिया जाता है।
- अब थ्रेड क्लाइंट 2 पर जाता है और उसे नंबर 3 देता है।
चूंकि केवल दो ग्राहक थे, अपेक्षित परिणाम 1 और 2 थे, न कि 2 और 3. एक संख्या को छोड़ दिया गया था।
क्या वास्तव में ऐसा होगा जब मैं अपने आवेदन को बढ़ाऊंगा? वैश्विक चर के लिए मुझे क्या विकल्प देखना चाहिए?