Как запрограммировать эквивалент обработчика событий JavaScript в Python с использованием asyncio?Python

Программы на Python
Ответить
Anonymous
 Как запрограммировать эквивалент обработчика событий JavaScript в Python с использованием asyncio?

Сообщение Anonymous »

Контекст
Я много программировал на javascript/typescript, и теперь мне нужно написать программу, которая открывает TCP-соединение и выполняет некоторые задачи по обмену данными, инициированные входящими сообщениями через Reticulum Link.
Проблема
Программа поддерживает открытое TCP-соединение в качестве TCP-клиента, который в Python представлен asyncio.StreamReader и асинхронно.StreamWriter. Если бы это было написано на JavaScript, я бы просто установил обратный вызов для реакции на событие завершения, например:

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

let socket = new net.Socket()
socket.open( 'localhost', 8001 )
socket.on( 'end', () => { connection_lost_handler() } )
Однако в Python у меня есть только читалка и писатель, и я не нашел в Reader определения обратного вызова, которое бы обрабатывало отключение, инициированное серверной стороной (с моей программной точки зрения это было бы «потеря соединения» без запроса на отключение со стороны клиента).
В документации библиотеки asyncio я не смог найти ничего похожего на обработку события end. Кроме того, если открытое соединение вызвало какое-то исключение, где мне его перехватить? Приложение Reticulum хранит средства чтения и записи в экземпляре объекта, который предоставляет методы, взаимодействующие с двумя потоками, но они активны только при вызове из основного приложения.
P.S. если есть лучший способ реализовать это, чем с помощью asyncio, я был бы рад узнать.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ng-asyncio
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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