Your Name
|
094d2cc112
|
fix(snmp): 修复异步函数同步调用导致'coroutine object is not an iterator'错误
问题原因:
- pysnmp.hlapi.asyncio 的 getCmd/bulkCmd/nextCmd 都是 async def 协程函数
- 返回的是 coroutine 对象,需要用 await 获取结果
- 原代码用 next() 或 for...in 同步迭代协程对象,报错:
'coroutine' object is not an iterator
解决方案:
1. snmp_service.py: 所有 SNMP 操作改为 async def
- test_connection(): getCmd 改为 await getCmd()
- get_arp_table(): bulkCmd 改为 await bulkCmd()
- get_mac_address_table(): bulkCmd 改为 await bulkCmd()
- get_interfaces(): bulkCmd 改为 await bulkCmd()
- poll_device(): 所有子调用加 await
2. api/v1/snmp.py: API 路由改为 async def + await
bulkCmd await 后返回 (errorIndication, errorStatus, errorIndex, varBindTable)
其中 varBindTable 是列表的列表(table 形式),需双层循环解析
|
2026-07-23 15:01:18 +08:00 |
|