Google अनुप्रयोग इंजन में मेरी WebApp2 आवेदन में निम्नलिखित कोड पर विचार करें।अजगर WSGI में समझौता वैश्विक वस्तु दृढ़ता एप्लिकेशन
मैं PHP दुनिया से आ रहा हूं जहां हर अनुरोध एक नया वैश्विक वातावरण था। मैं यहां क्या होने वाला समझता हूं, क्योंकि मैं WebApp2 के लिए wsgi कॉन्फ़िगरेशन का उपयोग कर रहा हूं, पाइथन प्रत्येक अनुरोध पर एक नई प्रक्रिया को नहीं लाता है। अगर मैं एक cgi विन्यास का उपयोग कर रहा था, तो दूसरी ओर, वैश्विक वातावरण हर बार फिर से दृष्टांत हैं, पीएचपी की तरह ...
ऊपर मान लिया जाये कि सही है (यदि नहीं, तो कृपया मुझे सही करें) ...
- मैं उन परिदृश्यों को कैसे संभाल सकता हूं जहां मैं एक वैश्विक चर चाहता हूं जो केवल अनुरोध के जीवनकाल के लिए बने रहे? मैं RequestHandler क्लास में एक इंस्टेंस वैरिएबल डाल सकता हूं, लेकिन उपयोगिता मॉड्यूल जैसी चीजों के बारे में क्या है जो मैं आयात करता हूं जो संदेश ऑब्जेक्ट को संग्रहीत करने जैसी चीज़ों के लिए ग्लोबल वर्र्स का उपयोग करता है?
- क्या सभी चरों को रीसेट करने के लिए तकनीक या पर्यावरण के पुन: तत्काल को बल देने के लिए कुछ प्रकार की तकनीक है?
- क्या वैश्विक वातावरण अनिश्चित काल तक जारी रहता है, या यह किसी बिंदु पर खुद को रीसेट करता है?
- क्या इनमें से कोई भी GAE विशिष्ट है, या wsgi वैश्विक दृढ़ता किसी भी सर्वर परिदृश्य में समान कार्य करता है?
संपादित करें:
यहाँ का उपयोग कर का प्रयास है threadlocal:
count = 0
mydata = threading.local()
mydata.count = 0
class MyHandler(webapp2.RequestHandler):
def get(self):
global count
count = count + 1
print count
mydata.count = mydata.count + 1
print mydata.count
ये भी बढ़ा देते भर का अनुरोध करता है
वहाँ एक विशेष कारण आप डेटासंग्रह के बाहर वैश्विक डाटा स्टोर करने की कोशिश कर रहे हैं है? ऐसा लगता है कि आप जो प्रयास कर रहे हैं वह एक [sharded काउंटर] (http://code.google.com/appengine/articles/sharding_counters.html) के साथ अधिक आसानी से पूरा किया जा सकता है। –
@ केविन- वह गणना चर केवल एक उदाहरण था- मेरा वास्तविक मामला पूरी तरह से कुछ और है - मैं बस एप्लिकेशन डोमेन के भीतर वैश्विक दायरे को समझने की कोशिश कर रहा हूं। – Yarin
संबंधित [क्यों पिलोन थ्रेडिंग.लोकल के बजाय StackedObjectProxies का उपयोग करते हैं?] (Http://stackoverflow.com/q/1686768/95735) –