我使用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
答案 0 :(得分:3)
目前没有办法。根据{{3}},返回无效大小就足够了。但是在Typhoeus中这不是一个选项,因为回调本身被包装并且它总是返回正确的大小:http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTWRITEFUNCTION。
编辑:Ethon 0.7.1能够中止on_body回调中的请求:https://github.com/typhoeus/ethon/blob/master/lib/ethon/easy/callbacks.rb#L37-48。