Неблокирующий ввод / вывод с помощью asyncio

Я пытаюсь написать сетевую игру с Pygame и asyncio, но я не могу понять, как избежать зависания при чтении. Вот мой код для клиента:

@asyncio.coroutine
def handle_client():
    print("Connected!")
    reader, writer = yield from asyncio.open_connection('localhost', 8000)
    while True:
        mouse_up = False
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()                
            elif event.type == pygame.MOUSEBUTTONUP:
                mouse_up = True

        if mouse_up:
            print("Writing")
            writer.write(b"Mouse up")
        print("Waiting to read")
        line = yield from reader.read(2**12)
        print(line.decode())

    writer.close()

Это висит на линииline = yield from reader.read(2**12), Раньше я думал, что смысл asyncio заключается в том, что он не блокирует, и поэтому, если нет данных для чтения, он просто продолжит выполнение. Теперь я вижу, что это не так.

Как интегрировать сетевой код asyncio с чертежом Pygame и кодом события?

Ответы на вопрос(3)

Ваш ответ на вопрос