我有一个简单的例子:
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服务器无法在localhost上运行
答案 0 :(得分:3)
当您通过Timeout=?
时,您将设置snmp的内部选择循环在注册超时之前应等待的最长时间。将其设置为1000000
意味着“等待100万微秒”,这是1秒。
但是还有一个Retries=?
参数指定snmp客户端在超时后重新尝试请求的次数,因此对于Timeout=1000000, Retries=0
,select将仅尝试1个请求并在1中超时第二。如果Retries=1
它将尝试两次并在2秒内超时。
因此,根据超时和重试的组合,您将看到不同的延迟量。
默认重试次数为3次,因此1次尝试+ 3次重试,每次1秒= 4秒。