场景:一个服务端A,一个客户端B,存在一个socket连接。
现在写的是客户端B部分,服务端不可控。
原来是 B先发送一个包,等待A返回指定内容,B再发送下一个包
def do():
s.send(...)
yield 1
s.send(...)
yield 2
# 接收到数据后的回调
def callback():
global f
next(f)
f=do()
next(f)
现在想实现一个timeout,并且实现阻塞。B发送数据后阻塞,直到A返回数据(或5秒内未接受到来自A的返回raise一个错误),请教如何实现?
用 Tornado 的话,写不了几行代码吧。
先作个简单的 Server ,以方便演示:
然后,来实现 Client ,基本逻辑是,超时就关闭连接,然后再重新建立连接: