import asyncio class TestObj: def __del__(self): print("DELETED OBJECT") async def handle_echo(reader, writer): test_obj = TestObj() while 1: try: data = await reader.read(100) except: writer.close() break if not data: writer.close() break message = data.decode() addr = writer.get_extra_info('peername') print(f"Received {message!r} from {addr!r}") print(f"Send: {message!r}") writer.write(data) await writer.drain() print("connection lost") async def main(): server = await asyncio.start_server( handle_echo, '0.0.0.0', 8888) addr = server.sockets[0].getsockname() print(f'Serving on {addr}') async with server: await server.serve_forever()