2013-02-18 47 views
7

पहले मैं यह सुनिश्चित करना चाहता हूं कि मैं सुविधा की असाइनमेंट को सही समझूं। स्थानीय प्रॉक्सी कार्यक्षमता को थ्रेड के भीतर मॉड्यूल (संकुल) के माध्यम से एक चर (ऑब्जेक्ट) साझा करने के लिए असाइन किया गया है। क्या मैं सही हू?वेर्कज़ुग में थ्रेड और स्थानीय प्रॉक्सी। उपयोग

दूसरी बार, उपयोग अभी भी मेरे लिए अस्पष्ट नहीं है, शायद क्योंकि मैंने असाइनमेंट को गलत समझा है। मैं फ्लास्क का उपयोग करता हूं। यदि मेरे पास दो (या अधिक) मॉड्यूल हैं: ए, बी। मैं मॉड्यूल ए से मॉड्यूल बी तक ऑब्जेक्ट सी आयात करना चाहता हूं लेकिन मैं इसे सामान्य तरीके से नहीं कर सकता, from A import C, क्योंकि इससे लूप आयात होगा और इसके बाद ImportError। Werkzeug स्थानीय प्रॉक्सी के साथ इस समस्या को हल करने के लिए कैसे? और क्या मुझे इसे वर्कज़ुग के साथ करना चाहिए?

मॉड्यूल एक:

from werkzeug.local import LocalSomething # LocalProxy or LocalStack 

C = 'C' 
# Somehow add C to LocalSomething 

मॉड्यूल बी:

from werkzeug.locla import LocalSomething 

C = LocalSomething()['C'] 
+0

यहां आयात लूप नहीं देखें – mderk

+0

मैं सभी स्थिति दिखाना नहीं चाहता क्योंकि यह प्रश्न विषय पर लागू नहीं होता है। कृपया कल्पना करें कि इसमें आयात लूप है। – I159

+0

आपको मॉड्यूल में कहीं भी 'लोकल' इंस्टेंस डालना होगा और अपनी प्रक्रिया/थ्रेड/ग्रीनलेट में कहीं भी इसके गुणों को लिखना/पढ़ना होगा। लेकिन आपको उस उदाहरण को पहले स्थान पर आयात करने में सक्षम होना चाहिए – mderk

उत्तर

6

मॉड्यूल जेड:

from werkzeug.local import Local 
myLocals = Local() 

मॉड्यूल एक:

from Z import myLocals 
myLocals.C = "C" 

मॉड्यूल बी:

from Z import myLocals 
C = getattr(myLocals, "C", None) 

आप देख रहे हैं है?

+0

हाँ, बहुत बहुत धन्यवाद! – I159