@kratorr

Как сделать переподключение в asyncio?

Есть примерно такой код:

import asyncio


class ClientProtocol(asyncio.Protocol):
    def __init__(self, loop):
        self.loop = loop
        
    def connection_made(self, transport):
        self.transport = transport
     
    def data_received(self, data):
        _process_command(self.data)
    
    def _process_command(self, data):
        if "connection" in data:
            self.foo(data)
        elif 'reconnect' in data:
           #реконнект
        elif "exit" in data:
            self.bar()
 
    def foo(self, data):
        pass
    
    def bar(self):
        pass
    
if __name__ ==  "__main__":
    loop = asyncio.get_event_loop()
    coros = [
        loop.create_connection(lambda: ClientProtocol(loop), '10.10.10.1', 666),
        loop.create_connection(lambda: ClientProtocol(loop), '10.10.10.2', 666),
        loop.create_connection(lambda: ClientProtocol(loop), '10.10.10.3', 666)
    ]
    loop.run_until_complete(asyncio.gather(*coros))
    loop.run_forever()
    loop.close()


Подскажите как сделать переподключение при получении команды или при неудачной попытки подключения ?
  • Вопрос задан
  • 188 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы