Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 29, 2013 06:45:20

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

pysnmp, AsynCommandGenerator.

Пытаюсь использовать асинхронный диспетчер.

#!/usr/bin/env python
#-*- coding: utf-8 -*-
from pysnmp.entity.rfc3413.oneliner import cmdgen
def cbFun(sendRequestHandle, errorIndication, errorStatus, errorIndex,
          varBinds, cbCtx):
    print varBinds
def main():
    #Синхронный диспетчер
    ip = '127.0.0.1'
    cmdGen = cmdgen.CommandGenerator()
    errorIndication, errorStatus, errorIndex, varBinds = cmdGen.nextCmd(
        cmdgen.CommunityData('mymypub'),
        cmdgen.UdpTransportTarget((ip, 161)),
        '1.3.6.1.2.1.17.7.1.2.2.1.2')
    #Выводит список varBinds, в котором около 200 элементов
    print varBinds
    #Асинхронный диспетчер
    cmdGen = cmdgen.AsynCommandGenerator()
    cmdGen.asyncNextCmd(
            cmdgen.CommunityData('mymypub'),
            cmdgen.UdpTransportTarget((ip, 161)),
            ((1,3,6,1,2,1,17,7,1,2,2,1,2),),
            (cbFun, ip))
    cmdGen.snmpEngine.transportDispatcher.runDispatcher()
    #После вызова callback-функции cbFun выведется varBinds, в котором будет только 1 элемент
if __name__ == '__main__':
    main()

Почему при асинхронном диспетчере я получаю одно значение? Как получить все, что я не так делаю?



Отредактировано plusplus (Янв. 29, 2013 06:46:09)

Офлайн

#2 Фев. 4, 2013 10:39:33

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

pysnmp, AsynCommandGenerator.

Ответ нашел, надо было добавить return True в функции cbFun



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version