2010-01-15 19 views
10

Tôi đang sử dụng mô-đun python LDAP để (trong số những thứ khác) tìm kiếm nhóm và đang chạy vào giới hạn kích thước của máy chủ và nhận được ngoại lệ SIZELIMIT_EXCEEDED. Tôi đã thử cả hai tìm kiếm đồng bộ và không đồng bộ và nhấn cả hai vấn đề.Làm cách nào để nhận được nhiều kết quả tìm kiếm hơn so với kết quả của máy chủ với Python LDAP?

Bạn có nghĩa vụ phải làm việc vòng này bằng cách đặt điều khiển phân trang trên tìm kiếm, nhưng theo các điều khiển tài liệu python-ldap chưa được triển khai cho search_ext. Có cách nào để làm điều này trong Python? Nếu thư viện python-ldap không hỗ trợ nó, có thư viện Python nào khác không?

+0

Tôi gặp vấn đề tương tự chính xác này. Tôi cần xử lý nhiều kết quả hơn giới hạn kích thước, sử dụng python. –

+0

Trong một nhúm, liên kết với máy chủ LDAP với thông tin đăng nhập gốc dn - trái ngược với ràng buộc ẩn danh mặc định - sẽ phá vỡ giới hạn SIZELIMIT_EXCEEDED. Tuy nhiên, kết quả phân trang (hoặc phân trang) - như được nêu bên dưới - là cách để đi từ cả góc độ máy khách và máy chủ. – colminator

Trả lời

14

Dưới đây là một số liên kết liên quan đến phân trang trong python-ldap.

+6

Các ví dụ đó đã lỗi thời. Tôi đang sử dụng Python 2.6 và 2.7 với python-ldap> = 2.3.11 và cú pháp đã thay đổi một chút. Xem https://bitbucket.org/jaraco/python-ldap/src/f208b6338a28/Demo/paged_search_ext_s.py để biết ví dụ cập nhật. – zerodeux

6

Sau một số cuộc thảo luận về danh sách gửi thư python-ldap-dev, tôi có thể trả lời của riêng tôi câu hỏi.

Điều khiển trang ĐƯỢC hỗ trợ bởi mô-đun lDAP Python, nhưng các tài liệu chưa được cập nhật cho search_ext để hiển thị điều đó. example linked by Gorgapor cho thấy cách sử dụng ldap.controls.SimplePagedResultsControl để đọc kết quả trong các trang.

Tuy nhiên, có một hình ảnh xác thực. Điều này sẽ làm việc với các máy chủ Microsoft Active Directory, nhưng không hoạt động với các máy chủ OpenLDAP (và có thể là các máy chủ khác, chẳng hạn như Sun). LDAP controls RFC không rõ ràng về việc liệu các điều khiển phân trang có được phép ghi đè cài đặt sizelimit của máy chủ hay không. Trên máy chủ ActiveDirectory họ có thể theo mặc định trong khi trên OpenLDAP họ không thể, nhưng tôi nghĩ rằng có một thiết lập máy chủ mà sẽ cho phép họ.

Vì vậy, ngay cả khi bạn thực hiện kiểm soát phân trang, vẫn không đảm bảo rằng nó sẽ nhận được tất cả các đối tượng mà bạn muốn. Sigh

Điều khiển phân trang cũng chỉ có sẵn với LDAP v3, nhưng tôi nghi ngờ rằng có nhiều máy chủ v2 đang được sử dụng.

+0

Trình duyệt ldap dựa trên python, Luma, dường như đang làm việc xung quanh giới hạn này bằng cách nào đó. Tôi đã cố gắng xem xét mã nguồn của nó để tìm ra, nhưng không có may mắn. Ngoài ra, bạn có thể liên kết đến chuỗi python-ldap-dev mà bạn đã đề cập không? –

+1

Giới hạn tài nguyên do khách hàng yêu cầu chẳng hạn như giới hạn thời gian và giới hạn kích thước không bao giờ có thể ghi đè giới hạn tài nguyên của máy chủ. Để xác định các điều khiển yêu cầu nào được hỗ trợ, hãy truy vấn DSE gốc (http://bit.ly/the-root-dse). –

Các vấn đề liên quan