Search code examples
pythonnet-snmp

problem with timeout in netsnmp lib


I have simple example:

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 
show me:

real    0m4.086s
user    0m0.073s
sys     0m0.007s

Why 4 seconds = 1000000 ? snmpd server not work on localhost


Solution

  • When you pass Timeout=? you are setting the maximum time that snmp's internal select loop should wait before registering a timeout. Setting this to 1000000 means "wait 1 million microseconds", which is 1 second.

    However there is also a Retries=? argument that specifies the number of times the snmp client will re-attempt the request after a timeout, so for Timeout=1000000, Retries=0 select will attempt only 1 request and timeout in 1 second. If Retries=1 it will try twice and timeout in 2 seconds.

    So depending on the combination of Timeout and Retries you will see different amounts of delay.

    The default number of Retries is 3, so 1 try + 3 retries of 1 seconds each = 4 seconds.