我想为 ldap 库(python-ldap-2.4.15-2.el7.x86_64)和 python 2.7 设置一个“超时”
我正在强制我的 /etc/hosts 解析一个不存在的 IP 地址以提高超时时间。
我已经遵循了几个示例,并在没有运气的情况下查看了文档或类似的问题。
到目前为止,我已经尝试在初始化之前强制全局超时:
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_TIMEOUT
并且OPT_TIMEOUT
正确分配了值。
每次执行时间都是 56 秒,我无法控制超时的秒数。
顺便说一句,python3 中的相同代码确实按预期工作:
real 0m10,094s
user 0m0,072s
sys 0m0,013s