龙卷风 AsyncHTTPClient() 块
Tornado AsyncHTTPClient() chunks
我目前正在使用以下代码获取 URL 的 body:
httpClient=AsyncHTTPClient()
try:
response=yield httpClient.fetch(url)
# do something with response.body
except (HTTPError, IOError, ValueError) as e:
pass
但是获取整个 body 似乎不是执行此操作的有效方法,因为我正在 URL 中搜索一段特定信息。是否有可能而不是获取 URL 的整个 body 以分块获取它并在我找到我正在寻找的内容后停止,或者在需要时继续获取?
我也这样做了 URLs。我看到你可以使用以下内容:
httpclient.HTTPRequest(url='[some_big_request]', streaming_callback=self.on_chunk)
但是,一旦我进入回调,我如何从该函数中获取我需要的信息?我需要将该值与我从其他 URLs...
获得的值结合起来
看看 streaming_callback
的 tornado.httpclient.HTTPRequest
。
If set, streaming_callback
will be run with each chunk of data as it is received, and HTTPResponse.body
and HTTPResponse.buffer
will be empty in the final response.
因为回调可以是一个闭包,它可以访问外部数据。在调用 tornado.httpclient.AsyncHTTPClient.fetch
的块中定义此函数。您可以访问所有必要的内容。
将 streaming_callback
与闭包或部分一起使用:
def f():
response = yield client.fetch(url, functools.partial(self.on_fetch, url))
def on_fetch(self, url, chunk):
# do something with chunk
目前无法从 streaming_callback
中取消提取;下载将继续 运行 完成。
我目前正在使用以下代码获取 URL 的 body:
httpClient=AsyncHTTPClient()
try:
response=yield httpClient.fetch(url)
# do something with response.body
except (HTTPError, IOError, ValueError) as e:
pass
但是获取整个 body 似乎不是执行此操作的有效方法,因为我正在 URL 中搜索一段特定信息。是否有可能而不是获取 URL 的整个 body 以分块获取它并在我找到我正在寻找的内容后停止,或者在需要时继续获取?
我也这样做了 URLs。我看到你可以使用以下内容:
httpclient.HTTPRequest(url='[some_big_request]', streaming_callback=self.on_chunk)
但是,一旦我进入回调,我如何从该函数中获取我需要的信息?我需要将该值与我从其他 URLs...
获得的值结合起来看看 streaming_callback
的 tornado.httpclient.HTTPRequest
。
If set,
streaming_callback
will be run with each chunk of data as it is received, andHTTPResponse.body
andHTTPResponse.buffer
will be empty in the final response.
因为回调可以是一个闭包,它可以访问外部数据。在调用 tornado.httpclient.AsyncHTTPClient.fetch
的块中定义此函数。您可以访问所有必要的内容。
将 streaming_callback
与闭包或部分一起使用:
def f():
response = yield client.fetch(url, functools.partial(self.on_fetch, url))
def on_fetch(self, url, chunk):
# do something with chunk
目前无法从 streaming_callback
中取消提取;下载将继续 运行 完成。