2015-10-07 4 views
6

कभी कभी मैं लोगों requests.Session वस्तु का उपयोग कर वेब एपीआई आह्वान देखें:request.get() और request.session() का उपयोग करने के बीच अंतर।() प्राप्त करें?

client = requests.session() 
resp = client.get(url='...') 

लेकिन कभी कभी वे नहीं है:

resp = requests.get(url='...') 

जब हम Session का उपयोग करना चाहिए किसी व्याख्या कर सकते हैं और न हम करते हैं जब उनकी जरूरत?

+1

आपका * पहला स्टॉप * [लाइब्रेरी दस्तावेज] होना चाहिए (http://docs.python-requests.org/en/latest/user/advanced/#session-objects)। –

उत्तर

9

हुड के तहत, requests.get() प्रत्येक अनुरोध के लिए एक नया Session ऑब्जेक्ट बनाता है।

एक सत्र ऑब्जेक्ट को सामने बनाकर, आप सत्र सत्र का पुन: उपयोग करते हैं; यह आपको कुकीज़ को जारी रखने देता है, उदाहरण के लिए, और आपको हेडर और क्वेरी पैरामीटर जैसे सभी कनेक्शनों के लिए उपयोग की जाने वाली सेटिंग्स का पुन: उपयोग करने देता है। इसे सब से ऊपर करने के लिए, सत्र आपको कनेक्शन पूलिंग का लाभ लेने देते हैं; एक ही मेजबान से कनेक्शन का पुन: उपयोग करना।

Sessions documentation देखें:

सत्र वस्तु आप अनुरोध भर में कुछ मापदंडों लागू करने के लिए अनुमति देता है। यह सत्र उदाहरण से किए गए सभी अनुरोधों में कुकीज़ भी जारी रखता है, और urllib3 के कनेक्शन पूलिंग का उपयोग करेगा। इसलिए यदि आप एक ही मेजबान के लिए कई अनुरोध कर रहे हैं, तो अंतर्निहित टीसीपी कनेक्शन का पुन: उपयोग किया जाएगा, जिसके परिणामस्वरूप एक महत्वपूर्ण प्रदर्शन वृद्धि हो सकती है (HTTP persistent connection देखें)।

+0

तो यदि मेरा HTTP अनुरोध एक बार का कार्य है, तो इन दो दृष्टिकोणों के बीच कोई अंतर नहीं होगा, है ना? –

+1

@FredPym: बिल्कुल। जैसे ही आप एक ही मेजबान के लिए कई कनेक्शन बनाते हैं, सत्र का पुन: उपयोग करना एक अच्छा विचार है। –

0

के शब्दों में documentation

सत्र वस्तु आप अनुरोध भर में कुछ मापदंडों लागू करने के लिए अनुमति देता है। यह सत्र उदाहरण से किए गए सभी अनुरोधों में कुकीज़ भी जारी रखता है।

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