2015-10-02 7 views
29

मैं g और session के बीच कार्यक्षमता और उद्देश्य में अंतर को समझने की कोशिश कर रहा हूं। दोनों ऑब्जेक्ट्स 'हैंग' सत्र डेटा पर हैं, क्या मैं सही हूँ? यदि हां, तो अंतर क्या हैं और मुझे किस मामले में उपयोग करना चाहिए?फ्लास्क: 'सत्र' बनाम 'जी'?

उत्तर

40

नहीं, g सत्र डेटा को लटकाने के लिए कोई ऑब्जेक्ट नहीं है। अनुरोधों के बीच g डेटा जारी नहीं है।

session आपको प्रति विशिष्ट ब्राउज़र डेटा स्टोर करने के लिए एक स्थान देता है। अपने फ्लास्क ऐप के उपयोगकर्ता के रूप में, एक विशिष्ट ब्राउज़र का उपयोग करके, अधिक अनुरोधों के लिए लौटाता है, सत्र अनुरोध उन अनुरोधों पर किया जाता है।

दूसरी ओर g डेटा के भीतर एक अनुरोध चक्र अपने कोड बेस के विभिन्न भागों के बीच साझा किया है। gbefore_request हुक के दौरान स्थापित किया जा सकता है, अभी भी teardown_request चरण के दौरान उपलब्ध है और एक बार अनुरोध किया जाता है और ग्राहक को भेजा जाता है, g साफ़ हो जाता है।

+7

तो 'सत्र' प्रति ग्राहक 'डेटा (कुकी पर आधारित है?) और' g' प्रति-अनुरोध डेटा है? –

+5

@AvivCohn: बिल्कुल। 'जी' का लाभ यह है कि यह आपके सभी अनुरोधों में मौजूद है, थ्रेड सुरक्षित है, और आपके वर्तमान ऐप के लिए विशिष्ट है (यदि आप * घोंसला * फ्लास्क ऐप्स थे जहां कोई दूसरा कॉल करता है तो यह महत्वपूर्ण हो जाता है)। तो आप 'pre_request' हुक के साथ उपयोगकर्ता ऑब्जेक्ट या डेटाबेस कनेक्शन सेट कर सकते हैं, फिर उसी उपयोगकर्ता या अपने टेम्पलेट्स में कनेक्शन एक्सेस कर सकते हैं, और फिर भी प्रत्येक कॉल के साथ इसे पास किए बिना टियरडाउन हुक में उपलब्ध है। –

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