当AsyncHTTPClient接收块时,龙卷风流式HTTP响应

当AsyncHTTPClient接收块时,龙卷风流式HTTP响应,第1张

当AsyncHTTPClient接收块时,龙卷风流式HTTP响应

装饰您的方法,

gen.coroutine
并产生一个期货列表。这是一个简单的例子:

from tornado import gen, web, httpclientclass StreamingHandler(web.RequestHandler):    @web.asynchronous    @gen.coroutine    def get(self):        client = httpclient.AsyncHTTPClient()        self.write('some opening')        self.flush()        requests = [ httpclient.HTTPRequest(     url='http://httpbin.org/delay/' + str(delay),     streaming_callback=self.on_chunk ) for delay in [5, 4, 3, 2, 1]        ]        # `map()` doesn't return a list in Python 3        yield list(map(client.fetch, requests))        self.write('some closing')        self.finish()    def on_chunk(self, chunk):        self.write('some chunk')        self.flush()

请注意,即使请求是“向后”产生的,第一个块仍将在大约一秒钟后收到。如果您同步发送它们,则需要15秒。当您异步请求它们时,只需花费5。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5650905.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存