Tornado AsyncHTTPClient()块

Tornado AsyncHTTPClient()块,tornado,Tornado,我目前正在使用以下代码获取URL的主体: httpClient=AsyncHTTPClient() try: response=yield httpClient.fetch(url) # do something with response.body except (HTTPError, IOError, ValueError) as e: pass 然而,获取整个身体似乎不是执行此操作的有效方法,因为我正在URL中

我目前正在使用以下代码获取URL的主体:

   httpClient=AsyncHTTPClient()  

    try:
       response=yield httpClient.fetch(url)

       # do something with response.body


    except (HTTPError, IOError, ValueError) as e:
       pass 
然而,获取整个身体似乎不是执行此操作的有效方法,因为我正在URL中搜索一段特定信息。是否有可能在找到我要查找的内容后,将URL的整个主体分块提取并停止,或者在需要时继续提取

我也在为一些URL做这件事。我看到您可以使用以下功能:

httpclient.HTTPRequest(url='[some_big_request]', streaming_callback=self.on_chunk)

但是,一旦我进入回调函数,我如何从该函数中获取所需的信息?我需要将该值与我从其他URL获得的值结合起来…

看看的
streaming\u callback

如果设置,
streaming\u回调
将在接收到每个数据块时运行,
HTTPResponse.body
HTTPResponse.buffer
将在最终响应中为空


因为回调可以是闭包,所以它可以访问外部数据。在调用
tornado.httpclient.asynchtpclient.fetch
的块中定义此函数。您可以访问所有必要的内容。

请查看的
流式处理回调

如果设置,
streaming\u回调
将在接收到每个数据块时运行,
HTTPResponse.body
HTTPResponse.buffer
将在最终响应中为空


因为回调可以是闭包,所以它可以访问外部数据。在调用
tornado.httpclient.asynchtpclient.fetch
的块中定义此函数。您可以访问所有必要的内容。

使用带有关闭或部分关闭的
流式\u回调

def f():
    response = yield client.fetch(url, functools.partial(self.on_fetch, url))

def on_fetch(self, url, chunk):
    # do something with chunk

当前无法在
流式_回调中取消提取;下载将继续运行到完成

使用带有关闭或部分关闭的
流式\u回调

def f():
    response = yield client.fetch(url, functools.partial(self.on_fetch, url))

def on_fetch(self, url, chunk):
    # do something with chunk

当前无法在
流式_回调中取消提取;下载将继续运行到完成

好的,谢谢,我会尝试一下,我需要装饰回调吗?在回调中也有一次,我发现需要,我需要如何使提取停止执行?好的,谢谢,我会尝试一下,我需要装饰回调吗?在回调中也有一次,我发现需要,我需要如何使提取停止执行?好的,谢谢Ben。实际上,我想这样做的唯一原因是,一旦我找到我想要的东西,就停止提取,从而有可能节省带宽。。。我已经读过关于抓取并行性的文章,并且认为这可能是一个更好的选择,因为我是在OK Ben之前连续加载的。实际上,我想这样做的唯一原因是,一旦我找到我想要的东西,就停止提取,从而有可能节省带宽。。。我已经读过关于获取的并行性的文章,并且认为这可能是一个更好的选择,因为我以前是串行加载的