У меня есть питон фрагмент кода, который использует asyncio
и инициирует «простой» соединение:Запуск связи Tls с питоном asyncio
loop = asyncio.get_event_loop()
coro = loop.create_connection(lambda: MyCustomClassProtocol(loop), sock=client_socket)
loop.run_until_complete(coro)
Дело в том, мои простые переключатели соединения с ДУС один раз некоторые биржи произошло , В традиционном пути можно было бы сделать это:
ssl_sock = ssl.wrap_socket(client_socket, do_handshake_on_connect=False)
ssl_sock.do_handshake()
Но я не знаю, как я могу справиться с этим с asyncio
. Мой метод data_received
получает зашифрованный контент, поэтому, я думаю, я могу что-то сделать, чтобы его расшифровать, но я не могу понять это.
Камяр прав: официального выхода в 3.4 нет. Существует [билет открыт] (https://github.com/python/asyncio/issues/79), который может быть исправлен в 3.6. До тех пор у меня есть супер-хакерское, недействительное гарантийное решение: 'self._transport = self._loop._make_ssl_transport (self._transport._sock, self, ssl_context, server_side = True)'. Это предполагает, что ваш протокол сохраняет ссылку на транспорт в 'self._transport' и ссылку на цикл событий в' self._loop'. –