2010-05-17 8 views
5

असीमित वातावरण में, threading.local अब संदर्भ-स्थानीय होने की गारंटी नहीं है, क्योंकि कई संदर्भ एक ही थ्रेड के भीतर सह-अस्तित्व में हो सकते हैं। वर्तमान अतुल्यकालिक ढांचे (gevent, eventlet) वर्तमान संदर्भ की पहचान करने के लिए get_current_context() कार्यक्षमता प्रदान करते हैं। कुछ बंदर-पैच threading.local के लिए एक रास्ता प्रदान करते हैं, इसलिए यह 'greenthreads' या अन्य ढांचे-विशिष्ट संदर्भों के लिए स्थानीय है। मुझे मुड़ दस्तावेज में ऐसी कार्यक्षमता नहीं मिल रही है। मैं यह कैसे करु?threading.local twisted.web के बराबर है?

उत्तर

3

मुझे लगता है कि आप प्रति-अनुरोध स्थिति को सहेजने और पुनर्प्राप्त करने के लिए यह एपीआई चाहते हैं। यदि नहीं, तो आप अपने प्रश्न को स्पष्ट करना चाहेंगे।

ट्विस्टेड वेब इन लाइनों के साथ किसी भी एपीआई की पेशकश नहीं करता है। चूंकि आप पूरी तरह से अनुरोध के पूरे जीवनकाल के लिए नियंत्रण में हैं, इसलिए संभव है आपके लिए किसी भी प्रति-अनुरोध राज्य को स्टोर करने के लिए: Resource उदाहरणों पर, स्थानीय लोगों में, कॉलबैक के तर्कों में इत्यादि। get_current_context फ़ंक्शन एक प्रकार का है अपने राज्य का ट्रैक रखने के लिए ग्लोबल्स का उपयोग करने के बहु-थ्रेडेड समकक्ष। जब आप इस बारे में सोचते हैं, उम्मीद है कि यह थोड़ा और स्पष्ट है कि आप वैकल्पिक समाधानों पर विचार क्यों कर सकते हैं।

संबंधित मुद्दे