亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

python異步回調轉為同步并實現超時

瀏覽:89日期:2022-07-01 11:35:28

問題描述

場景:一個服務端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一個錯誤),請教如何實現?

問題解答

回答1:

用 Tornado 的話,寫不了幾行代碼吧。

先作個簡單的 Server ,以方便演示:

# -*- coding: utf-8 -*-from tornado.ioloop import IOLoopfrom tornado.tcpserver import TCPServerfrom tornado import genclass Server(TCPServer): @gen.coroutine def handle_stream(self, stream, address):while 1: data = yield stream.read_until(’n’) if data.strip() == ’exit’:stream.close()break if data.strip() == ’5’:IOLoop.current().call_at(IOLoop.current().time() + 5, lambda: stream.write(’ok 5n’)) else:stream.write(’okn’)if __name__ == ’__main__’: Server().listen(8000) IOLoop.current().start()

然后,來實現 Client ,基本邏輯是,超時就關閉連接,然后再重新建立連接:

# -*- coding: utf-8 -*-import functoolsfrom tornado.ioloop import IOLoopfrom tornado.tcpclient import TCPClientfrom tornado import gendef when_error(stream): print ’ERROR’ stream.close() main()@gen.coroutinedef main(): client = TCPClient() stream = yield client.connect(’localhost’, 8000) count = 0 IL = IOLoop.current() while 1:count += 1stream.write(str(count) + ’n’)print count, ’...’timer = IL.call_at(IL.time() + 4, functools.partial(when_error, stream))try: data = yield stream.read_until(’n’)except: breakIL.remove_timeout(timer)print datayield gen.Task(IL.add_timeout, IOLoop.current().time() + 1)if __name__ == ’__main__’: main() IOLoop.current().start()

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 草逼毛片| 91成人在线视频 | 欧美成人在线影院 | 深夜偷偷看视频在线观看 | 香蕉手机网 | 亚洲日韩色综合视频 | 亚洲国产精品一区二区不卡 | 精品国产免费一区二区三区五区 | 毛茸茸年轻成熟亚洲人 | www.涩| 成人精品一区二区三区 | 99久久精品国产高清一区二区 | 日本久久久久久中文字幕 | 国产毛片一级 | 国语自产精品视频在线第 | 成人免费黄色大片 | 欧美日韩 国产区 在线观看 | 亚洲一片| 国产免费一区二区三区在线观看 | 国产精品综合一区二区 | 久久r精品 | 日韩a级毛片免费视频 | 国产一级黄色 | 小明看片| 免费欧美在线视频 | 精品三级网站 | 91国视频在线观看 | 中文字幕最新中文字幕中文字幕 | 日韩欧一级毛片在线播无遮挡 | 亚洲欧美日韩国产精品26u | 久久狠狠干| 欧美区国产区 | 伊人精品线视天天综合 | 黑人巨大两根一起挤进来 | 色花五月色婷婷 | 亚洲欧美一区二区三区久本道 | 真人午夜a一级毛片 | 性视频一区二区三区免费 | 国产黄毛片 | 91新视频 | 婷婷色综合久久五月亚洲 |