в приведенном ниже коде мы асинхронно ожидаем получения данных. Но как перестать ждать чтения, когда больше не ждут данных.
Причина, по которой я спрашиваю об этом, заключается в том, что я хочу реализовать класс, который продолжает прослушивать поступающие сообщения в отдельном потоке, используя asyncio.run_coroutine_threadsafe, и хочет прервать прослушивание, как только мой тест закончится (чтобы освободить соединение с сокетом).
import asyncio
@asyncio.coroutine
def tcp_echo_client(message, loop):
reader, writer = yield from asyncio.open_connection('127.0.0.1', 8888,
loop=loop)
print('Send: %r' % message)
writer.write(message.encode())
data = yield from reader.read(100)
print('Received: %r' % data.decode())
print('Close the socket')
writer.close()
message = 'Hello World!'
loop = asyncio.get_event_loop()
loop.run_until_complete(tcp_echo_client(message, loop))
loop.close()