【发布时间】:2020-08-02 21:06:35
【问题描述】:
我正在查看Trio tutorial,并创建了一个echo-client,它将消息发送到echo server 10 秒:
async def sender(client_stream, flag):
print("sender: started!")
end_time = time.time() + 10
while time.time() < end_time:
data = b"async can sometimes be confusing, but I believe in you!"
print("sender: sending {!r}".format(data))
await client_stream.send_all(data)
await trio.sleep(0)
flag = False
print("Left the while 10 seconds loops")
并在flag 为“真”时等待响应。
async def receiver(client_stream, flag):
print("receiver: started!")
while(flag):
data = await client_stream.receive_some()
print("receiver: got data {!r}".format(data))
print("receiver: connection closed")
sys.exit()
问题是有时程序会因为变量flag 的并发问题而在data = await client_stream.receive_some() 行挂起。
如何将信号从sender 协同程序发送到receiver 协同程序?
这是您可以运行的entire program。
【问题讨论】:
标签: python python-3.x python-trio