微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在python 2.7中为ldap设置超时

如何解决无法在python 2.7中为ldap设置超时

我想为ldap库(python-ldap-2.4.15-2.el7.x86_64)和python 2.7设置“超时”

我正在强迫我的/ etc / hosts解析其中不存在的IP地址 为了提高超时时间。

我遵循了几个示例,并顺利地研究了documentation或问题like this one

现在,我已经尝试在初始化之前强制全局超时:

ldap.set_option(ldap.OPT_NETWORK_TIMEOUT,1)
ldap.set_option(ldap.OPT_TIMEOUT,1)
ldap.protocol_version=ldap.VERSION3

在对象级别强制使用相同的值:

ldap_obj = ldap.initialize("ldap://%s:389" % LDAPSERVER,trace_level=9)
ldap_obj.set_option(ldap.OPT_NETWORK_TIMEOUT,1)
ldap_obj.set_option(ldap.OPT_TIMEOUT,1)

我也尝试过:

ldap.network_timeout = 1
ldap.timelimit = 1

并使用了search和search_st(具有超时的同步形式)这两种方法

最后这是代码

def testLDAPConex( LDAPSERVER ) :
    """
    Check ldap
    """
    ldap.set_option(ldap.OPT_NETWORK_TIMEOUT,1)
    ldap.set_option(ldap.OPT_TIMEOUT,1)
    ldap.protocol_version=ldap.VERSION3
    ldap.network_timeout = 1
    ldap.timelimit = 1
    try:
        ldap_obj = ldap.initialize("ldap://%s:389" % LDAPSERVER,trace_level=9)
        ldap_result_id = ldap_obj.search("ou=people,c=this,o=place",ldap.ScopE_SUBTREE,"cn=user")

我已经打印了对象OPT_NETWORK_TIMEOUTOPT_TIMEOUT的常量,这些值已正确分配。

每次执行时间为56秒,我无法控制超时的秒数。

顺便说一句,python3中的相同代码确实按预期工作:

real    0m10,094s
user    0m0,072s
sys 0m0,013s

解决方法

经过一些测试,我决定将VM回滚到以前的状态。

网络团队正在对整个网络配置进行更改,这些更改可能会改变接口上的行为,并可能会导致通过有线方式发送软件包时出现某种错误:

ldap_result_id = ldap_obj.search("ou=people,c=this,o=place",ldap.SCOPE_SUBTREE,"cn=user")

还原虚拟机(包括重新启动)后,无法访问LDAP的错误按预期增加。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。