場景:一個服務端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 ,基本邏輯是,超時就關閉連接,然後再重新建立連接: