您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

from tornado import gen, web, httpclient

class 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。

其他 2022/1/1 18:51:32 有740人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶