2010-01-15 7 views
10

मैं python LDAP मॉड्यूल का उपयोग कर रहा हूं (अन्य चीजों के साथ) समूहों के लिए खोज, और सर्वर की आकार सीमा में चल रहा हूं और SIZELIMIT_EXCEEDED अपवाद प्राप्त कर रहा हूं। मैंने सिंक्रोनस और एसिंक्रोनस दोनों खोजों की कोशिश की है और समस्या को दोनों तरीकों से मारा है।पायथन एलडीएपी के साथ सर्वर के सिज़ेलिमिट की तुलना में अधिक खोज परिणाम कैसे प्राप्त करें?

आप खोज पर पेजिंग नियंत्रण सेट करके इसे गोल करने में सक्षम होना चाहिए, लेकिन पाइथन-एलडीएपी दस्तावेज़ नियंत्रण के अनुसार अभी तक search_ext के लिए लागू नहीं किया गया है। क्या Python में ऐसा करने का कोई तरीका है? यदि पायथन-एलडीएपी लाइब्रेरी इसका समर्थन नहीं करती है, तो क्या कोई अन्य पायथन पुस्तकालय है?

+0

मुझे यह वही समस्या है। मुझे पायथन का उपयोग करके आकार सीमा से अधिक परिणाम संसाधित करने की आवश्यकता है। –

+0

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

उत्तर

14

यहां पाइथन-एलडीएपी में पेजिंग से संबंधित कुछ लिंक दिए गए हैं।

+6

उन उदाहरणों को पुराना है। मैं पायथन 2.6 और 2.7 का उपयोग पाइथन-एलडीएपी> = 2.3.11 के साथ कर रहा हूं और वाक्यविन्यास थोड़ा बदल गया है। अद्यतित उदाहरण के लिए https://bitbucket.org/jaraco/python-ldap/src/f208b6338a28/Demo/paged_search_ext_s.py देखें। – zerodeux

6

अजगर-ldap-देव मेलिंग सूची पर कुछ चर्चा के बाद, मैं अपने ही जवाब दे सकती है सवाल।

पेज नियंत्रण पायथन एलडीएपी मॉड्यूल द्वारा समर्थित हैं, लेकिन दस्तावेज़ों को दिखाने के लिए search_ext के लिए अद्यतन नहीं किया गया था। example linked by Gorgapor दिखाता है कि पृष्ठों में परिणामों को पढ़ने के लिए ldap.controls.SimplePagedResultsControl का उपयोग कैसे करें।

हालांकि एक गोचाचा है। यह माइक्रोसॉफ़्ट एक्टिव डायरेक्टरी सर्वर के साथ काम करेगा, लेकिन ओपनएलएपी सर्वर (और संभवतया अन्य, जैसे सूर्य के) के साथ नहीं। LDAP controls RFC संदिग्ध है कि सर्वर की सिज़ेलिमिट सेटिंग को ओवरराइड करने के लिए पेज किए गए नियंत्रणों को अनुमति दी जानी चाहिए या नहीं। ActiveDirectory सर्वर पर वे OpenLDAP पर डिफ़ॉल्ट रूप से डिफ़ॉल्ट रूप से कर सकते हैं, लेकिन मुझे लगता है कि एक सर्वर सेटिंग है जो उन्हें अनुमति देगी।

तो यदि आप पेजेड नियंत्रण को लागू करते हैं, तो अभी भी कोई गारंटी नहीं है कि आपको वह ऑब्जेक्ट मिल जाएगा जो आप चाहते हैं। Sigh

इसके अलावा पेज किए गए नियंत्रण केवल एलडीएपी v3 के साथ उपलब्ध हैं, लेकिन मुझे संदेह है कि उपयोग में कई v2 सर्वर हैं।

+0

पायथन आधारित एलडीएपी ब्राउज़र, लुमा, इस सीमा के आसपास किसी भी तरह काम कर रहा है। मैं इसे समझने के लिए अपने स्रोत कोड को देखने की कोशिश कर रहा हूं, लेकिन कोई भाग्य नहीं है। साथ ही, क्या आप उल्लेख किए गए पायथन-एलडीएपी-देव थ्रेड से लिंक कर सकते हैं? –

+1

ग्राहक-अनुरोधित संसाधन सीमाएं जैसे समय सीमा और आकार सीमा सर्वर की संसाधन सीमाओं को कभी ओवरराइड नहीं कर सकती है। यह निर्धारित करने के लिए कि कौन से अनुरोध नियंत्रण समर्थित हैं, रूट डीएसई (http://bit.ly/the-root-dse) से पूछें। –

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