【发布时间】:2014-09-05 17:27:16
【问题描述】:
我正在使用asyncio.Protocol 服务器,其目的是让客户端调用服务器,但等待直到服务器响应并返回数据,然后再停止客户端循环。 p>
基于此处的异步文档 Echo 客户端和服务器:https://docs.python.org/3/library/asyncio-protocol.html#protocol-example-tcp-echo-server-and-client,调用时立即返回 transport.write(...) 的结果。
根据经验,调用loop.run_until_complete(coroutine) 失败并显示RuntimeError: Event loop is running.
在服务器的data_received() 方法中运行asyncio.sleep(n) 也没有任何效果。
data_received() 中的yield from asyncio.sleep(n) 和yield from asyncio.async(asyncio.sleep(n)) 都挂起服务器。
我的问题是,我如何让我的客户端在交还控制权之前等待服务器写入响应?
【问题讨论】:
-
你想在从服务器得到应答后关闭客户端吗?还是别的什么?
-
是的,我希望客户端和服务器之间的功能就像典型的同步方法调用一样,尽管是非阻塞的
标签: sockets client-server synchronous coroutine python-asyncio