В LDAP: LDAP-сервер.ПОТРЕБЛЕНИЯ SIZELIMIT ПРЕВЫСИЛ

Я получаю ldap.Ошибка SIZELIMIT_EXCEEDED при запуске этого кода:

import ldap

url = 'ldap://<domain>:389'
binddn = 'cn=<username> readonly,cn=users,dc=tnc,dc=org'
password = '<password>'

conn = ldap.initialize(url)
conn.simple_bind_s(binddn,password)

base_dn = "ou=People,dc=tnc,dc=org"
filter = '(objectClass=*)'
attrs = ['sn']

conn.search_s( base_dn, ldap.SCOPE_SUBTREE, filter, attrs )

где мой настоящий логин, мой пароль, и домен.

Я не понимаю, почему это. Кто-нибудь может пролить свет?

спасибо! :) Эрик!--2-->

5 ответов


руководство:http://www.python-ldap.org/doc/html/ldap.html

исключение ldap.SIZELIMIT_EXCEEDED
Превышен лимит размера LDAP. Этот может быть из-за sizelimit конфигурация на сервере LDAP.

Я думаю, что ваш лучший выбор здесь, чтобы ограничить sizelimit на сообщение, которое вы получите от сервера. Вы можете сделать это, установив атрибут LDAPObject.sizelimit (устарело) или использование sizelimit параметр при использовании search_ext()

вы также должны убедиться, что ваша привязка была действительно успешной...


фильтр, который вы предоставили (objectClass=*) является наличие фильтра. В этом случае он ограничивает результаты запроса на поиск объектами в каталоге и под базовым объектом, который вы предоставили , - это каждый объект под базовым объектом, так как каждый объект имеет по крайней мере один objectClass. Ограничьте поиск, используя более ограничительный фильтр, или более узкую область, или нижний базовый объект, или все три. Дополнительные сведения по теме поискового запроса см. В разделе С помощью ldapsearch и LDAP: практика программирования.

администраторы сервера каталогов могут налагать общесерверное ограничение на записи, которые могут быть возвращены клиентам LDAP, они известны как сервер-наложенный предельный размер. Существует ограничение по времени, которое следует тем же правилам.

клиенты LDAP всегда должны предоставлять ограничение размера и ограничение по времени с запросом поиска, эти ограничения, известные как клиент-просил пределы не удается переопределить ограничения, наложенные сервером, однако.


смотрите здесь что делать, когда вы получаете эту ошибку:

как получить больше результатов поиска, чем размер сервера с Python LDAP?


для этого необходимо использовать поиск по страницам. Размер страницы будет зависеть от вашего сервера ldap, 1000 будет работать для Active Directory.

посмотреть http://google-apps-for-your-domain-ldap-sync.googlecode.com/svn/trunk/ldap_ctxt.py пример


Active Directory по умолчанию возвращает максимум 1000 результатов. Что раздражает, так это то, что вместо возврата 1000 с соответствующим кодом ошибки он, похоже, отправляет код ошибки без данных.

eDirectory начинается без значения по умолчанию и полностью conifgurable для того, что вам нравится.

другие каталоги обрабатывают его по-разному. (Отредактируйте и добавьте, если знаете).