Python 使用asyncio实现一个简单的echo服务器

Python 使用asyncio实现一个简单的echo服务器,python,python-asyncio,Python,Python Asyncio,我正在尝试使用asyncio实现一个简单的echo服务器。以下是我的尝试: import asyncio async def process(reader, writer): while True: data = await reader.readline() writer.write(data) loop = asyncio.get_event_loop() listener = asyncio.start_server(process, host=

我正在尝试使用asyncio实现一个简单的echo服务器。以下是我的尝试:

import asyncio

async def process(reader, writer):
    while True:
        data = await reader.readline()
        writer.write(data)

loop = asyncio.get_event_loop()
listener = asyncio.start_server(process, host=None, port=2500)
loop.run_until_complete(listener)
loop.run_forever()

这将启动服务器,我可以从多个客户机连接,客户机的消息也会回显给他们。问题是,当我关闭其中一个客户端时,回送消息也不再出现在其他连接的客户端上。为什么会发生这种情况?我如何防止这种情况发生?

服务器挂起,因为当连接关闭时,循环未退出。约定是当网络读取函数不返回任何数据时,表示EOF。服务器必须处理它,例如:

while True:
    data = await reader.readline()
    if not data:
        break
    writer.write(data)
没有中断,循环会一次又一次地执行,因为EOF状态不会改变


请注意,每个连接都由自己的
进程处理,该进程由属于该连接的读卡器和写卡器调用。

谢谢,修复了它。我所有的网络代码中都有这段代码,我第一次做asyncio时就忘了。