如何设置 pysnmp 请求的超时/重试

问题描述 投票:0回答:1

我正在尝试使用 lextudio/pysnmp 发送 snmp v1/v2 get 请求。我一直在尝试使用示例代码:

import asyncio
from pysnmp.hlapi.v1arch.asyncio import *


async def run():
    snmpDispatcher = SnmpDispatcher()

    iterator = await getCmd(
        snmpDispatcher,
        CommunityData("public", mpModel=0),
        await UdpTransportTarget.create(("demo.pysnmp.com", 161)),
        ("1.3.6.1.2.1.1.1.0", None),
    )

    errorIndication, errorStatus, errorIndex, varBinds = iterator

    if errorIndication:
        print(errorIndication)

    elif errorStatus:
        print(
            "{} at {}".format(
                errorStatus.prettyPrint(),
                errorIndex and varBinds[int(errorIndex) - 1][0] or "?",
            )
        )
    else:
        for varBind in varBinds:
            print(" = ".join([x.prettyPrint() for x in varBind]))

    snmpDispatcher.transportDispatcher.closeDispatcher()


asyncio.run(run())

但是我没有看到为请求设置超时/重试次数的选项,因此程序将无限期地运行错误的请求。有谁知道有什么好方法吗?

python python-asyncio snmp pysnmp
1个回答
0
投票

正如文档站点中所写,使用此包的许多技巧都在单元测试用例中。

await UdpTransportTarget.create(("1.2.3.4", 161), timeout=1, retries=0)
© www.soinside.com 2019 - 2024. All rights reserved.