[我正在使用python-ldap模块来搜索组,并且正在遇到服务器的大小限制并获得SIZELIMIT_EXCEEDED
异常。我已经尝试过同步和异步搜索,并且都通过两种方式都遇到了问题。
您应该可以通过在搜索中设置分页控件来解决此问题,但是根据python-ldap docs,这些控件尚未针对search_ext()
实现。有没有办法在Python中做到这一点?如果python-ldap
库不支持它,是否还有另一个Python库呢?
在对python-ldap-dev邮件列表进行了一些讨论之后,我可以回答我自己的问题。
页面控件受Python lDAP模块支持,但是尚未针对search_ext更新文档以显示该信息。 example linked by Gorgapor显示如何使用ldap.controls.SimplePagedResultsControl读取页面中的结果。
但是有一个陷阱。这将适用于Microsoft Active Directory服务器,但不适用于OpenLDAP服务器(可能还适用于其他服务器,例如Sun的服务器)。关于是否应允许分页控件覆盖服务器的sizelimit设置,LDAP controls RFC尚不明确。在ActiveDirectory服务器上,它们默认情况下可以,而在OpenLDAP上则不能,但是我认为有一个服务器设置可以允许它们。
因此,即使您实现了分页控件,也仍然无法保证它会获得所需的所有对象。 叹气
也分页控件仅在LDAP v3中可用,但我怀疑是否有许多v2服务器正在使用。