У меня есть простой пример:
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
Когда вы проходите Timeout=?
, вы устанавливаете максимальное время, в течение которого цикл внутреннего выбора snmp должен ждать до регистрации таймаута. Установка этого параметра на 1000000
означает "подождать 1 миллион микросекунд", что составляет 1 секунду.
Однако есть также аргумент Retries=?
, который указывает, сколько раз клиент snmp будет повторно пытаться выполнить запрос после таймаута, поэтому для Timeout=1000000, Retries=0
select будет пытаться выполнить только 1 запрос и таймаут за 1 секунду. Если Retries=1
будет пробовать дважды и таймаут через 2 секунды.
Таким образом, в зависимости от комбинации Timeout и Retries вы увидите разные задержки.
Число повторов по умолчанию равно 3, поэтому 1 попытка + 3 повторения по 1 секунде каждый = 4 секунды.