【问题标题】:Unable to set TIMEOUT for ldap in Python 2.7无法在 Python 2.7 中为 ldap 设置 TIMEOUT
【发布时间】:2023-04-04 10:56:01
【问题描述】:

我想为 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

【问题讨论】:

    标签: python ldap pyldap


    【解决方案1】:

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

    网络团队正在对网络配置进行更改,这可能会改变接口的行为,并在包通过网络发送时出现某种错误:

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

    还原 VM(包括重新启动)后,出现无法访问 LDAP 的错误。

    【讨论】:

      猜你喜欢
      • 2014-01-12
      • 1970-01-01
      • 2018-01-21
      • 2014-09-12
      • 1970-01-01
      • 2017-10-21
      • 1970-01-01
      • 2014-06-19
      • 1970-01-01
      相关资源
      最近更新 更多