I use this coroutine:
@asyncio.coroutine
def send_data(self, data):
# get a client by its peername
peername = self.transport.get_extra_info('peername')
client = self.clients.get(peername)
# create a client if peername is not known or the client disconnect
if client is None or not client.connected:
protocol, client = yield From(loop.create_connection(Client,
'172.18.100.86', 9098))
client.server_transport = self.transport
self.clients[peername] = client
# forward data to the client
client.transport.write(data)
And looks like client client is None or not client.connected every time