Как PySNMP AsyncioDispatcher вписывается в более широкий контекст asyncio?Python

Программы на Python
Anonymous
Как PySNMP AsyncioDispatcher вписывается в более широкий контекст asyncio?

Сообщение Anonymous »

Я пытаюсь реализовать довольно простое асинхронное приложение, используя pysnmp-lextudio. В идеале я хотел бы предложить командную строку, которая позволяла бы мне отправлять команды (получить/установить), а также получать уведомления о входящих ловушках/информациях.
Я думаю Я реализовал аспект командной строки, используя код, похожий на:

Код: Выделить всё

async def interactive_prompt():
"""Provide a continuous prompt for user input."""
print("Enter 'help' for a list of commands.")
while True:
user_input = input("> ").strip()
await process_command(user_input)

async def main():
await asyncio.gather(
# receive_notifications(),
interactive_prompt()
)

if __name__ == "__main__":
asyncio.run(main())

Однако мне трудно понять, как различные примеры обработки уведомлений вписываются в эту настройку (если вообще вписываются). Пример, представленный здесь: https://docs.lextudio.com/pysnmp/exampl ... ort-tweaks, кажется, блокируется в следующих местах:

Код: Выделить всё

...
try:
# Dispatcher will never finish as job#1 never reaches zero
transportDispatcher.runDispatcher()
finally:
transportDispatcher.closeDispatcher()
Предполагая, что это действительно блокируется, мое первое предположение (исходящее из мира C++) заключается в том, что это должно существовать в отдельном потоке, поскольку оно никогда не позволит запускать другие задачи. Я, очевидно, новичок в мире асинхронного Python, так что, возможно, я упускаю здесь что-то очевидное. Мои попытки покопаться в коде ни к чему не привели. Я был бы очень признателен за некоторые разъяснения по этому поводу. Ошибся ли я, принимая asyncio? Должен ли я следовать своему инстинкту и вернуться к использованию подпроцесса?

Подробнее здесь: https://stackoverflow.com/questions/788 ... io-context

Вернуться в «Python»