我想为ldap库( python 2.4.15-2.el7.x86_64)和python 2.7设置一个“超时值”。
我强迫我的/etc/主机解析一个不存在的IP地址,以提高超时。
我学习了几个例子,没有运气地看了一下文档或examples 就像这个。
到目前为止,我已经尝试在初始化之前强制执行全局超时:
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_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的常量,正确地分配了值。
每次执行时间是56s,我无法控制超时的秒数。
顺便说一句,python3中的相同代码确实按预期工作:
real 0m10,094s
user 0m0,072s
sys 0m0,013s发布于 2020-10-28 15:51:54
经过一些测试,我决定将VM回滚到以前的状态。
网络团队正在对整个网络配置进行更改,这些更改可能已经改变了界面上的行为,以及当包通过线路发送进来时出现的某种错误:
ldap_result_id = ldap_obj.search("ou=people,c=this,o=place", ldap.SCOPE_SUBTREE, "cn=user")在还原VM (其中包括重新启动)之后,无法达到LDAP的错误将如预期的那样引发。
https://stackoverflow.com/questions/64560955
复制相似问题