import asyncio async def handle_echo(reader: asyncio.StreamReader, writer: asyncio.StreamWriter): data = await reader.read(100) message = data.decode() addr = writer.get_extra_info('peername') print(f"Received {message!r} from {addr!r}") print(f"Send: {message!r}") ans = '''HTTP/1.1 200 OK\nContent-Length: 6\n\nhello\n'''.encode() writer.write(ans) await writer.drain() print("Close the connection") writer.transport.close() writer.close() await writer.wait_closed() async def main(): server = await asyncio.start_server( handle_echo, '127.0.0.1', 8888) addr = server.sockets[0].getsockname() print(f'Serving on {addr}') async with server: await server.serve_forever() asyncio.run(main())