在netsnmp库中超时问题

1 投票
1 回答
3479 浏览
提问于 2025-04-16 16:26

我有一个简单的例子:

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秒后超时。

所以根据 TimeoutRetries 的不同组合,你会看到不同的延迟时间。

默认的重试次数是3次,所以1次尝试加上3次每次1秒的重试,总共就是4秒。

撰写回答