在netsnmp库中超时问题
我有一个简单的例子:
import netsnmp var = netsnmp.Varbind('ifHCInOctets','0') res = netsnmp.snmpgetnext(var,Version = 2,DestHost='localhost',Community='public',Timeout=1000000) print res[0]
time python2 test.py给我展示了:
real 0m4.086s user 0m0.073s sys 0m0.007s
为什么4秒等于1000000?snmpd服务器在本地不工作。
1 个回答
4
当你设置 Timeout=?
时,其实是在告诉snmp的内部选择循环,最多可以等多久才算超时。比如说设置为 1000000
,这就意味着“等100万微秒”,也就是1秒钟。
另外,还有一个 Retries=?
参数,它是用来指定snmp客户端在超时后会重新尝试请求多少次。所以如果你设置 Timeout=1000000, Retries=0
,那么它只会尝试一次请求,1秒后就会超时。如果设置 Retries=1
,那么它会尝试两次,请求会在2秒后超时。
所以根据 Timeout
和 Retries
的不同组合,你会看到不同的延迟时间。
默认的重试次数是3次,所以1次尝试加上3次每次1秒的重试,总共就是4秒。