2

我正在使用带有十几个请求的 hydra 队列的 Typhoeus。

我正在使用 on_body 回调来流式传输响应。

在此回调中中止当前请求(即达到最大文件大小......)而不中止队列中的所有其他请求的最佳方法是什么?

hydra = Typhoeus::Hydra.hydra

urls.each do |url|
  request = Typhoeus::Request.new(url, followlocation: true, timeout: 5, connecttimeout: 5)
  request.on_body do |chunk, response|
    #
    # How to conditionally abort the request here ?
    #        
  end

  hydra.queue request
end

hydra.run
4

1 回答 1

3

目前没有办法。根据http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTWRITEFUNCTION,返回无效大小就足够了。但这在 Typhoeus 中还不是一个选项,因为回调本身被包装并且它总是返回正确的大小:https ://github.com/typhoeus/ethon/blob/master/lib/ethon/easy/callbacks.rb#L37 -48

编辑:Ethon 0.7.1 能够中止 on_body 回调中的请求:https ://github.com/typhoeus/ethon/commit/6117872004c9ed1dac0ac15542dffc10177d8eae 。

于 2014-04-30T09:39:36.690 回答