0
0 комментариев

В питоне хочу сделать не блокирующую работу с 2мя сокетами. Для упрощения примера представим Proxy.

Пытаюсь на asincio реализовать.

Клиент_1 устанавливает соединение с сервером — получаю reader и writer. Сервер устанавливает новое соединение с внутренним процессом через файловый сокет (в данном проекте, но может понадобится и другие типы соединения).

Процесс может создавать запросы клиенту, а клиент к процессу.

Очень давно на втором питоне делал несколько тредов которые общались через multiprocessing.Queue. Эти схемы надо бы исключить потому как передача большого количества данных займет много оперативной памяти.

С клиента читаю 4 байта заголовка, и по размеру тело сообщения. Тело обрабатывается и отправляется к процессу.

С процесса читаю по мере поступления отдельные, их также надо перепаковать.

Запускаю читалки в циклах. Та что с клиента отрабатывает одно сообщение, а вторая продолжает дергать процесс. Такое чувство что второй блокирует первый и вставляет awaitы в LIFO, не давая первому читать сокет клиента.


Добавить комментарий