我正在使用 Ruby curb 一次调用多个 url,例如
require 'rubygems'
require 'curb'
easy_options = {:follow_location => true}
multi_options = {:pipeline => true}
Curl::Multi.get(['http://www.example.com','http://www.trello.com','http://www.facebook.com','http://www.yahoo.com','http://www.msn.com'], easy_options, multi_options) do|easy|
# do something interesting with the easy response
puts easy.last_effective_url
end
我的问题是我想在发生任何 url 超时时中断后续的异步调用,这可能吗?
最佳答案
据我所知,当前的 API 没有公开 Curl::Multi 实例,否则你可以这样做:
stop_everything = proc { multi.cancel! }
multi = Curl::Multi.get(array_of_urls, on_failure: stop_everything)
最简单的方法可能是修补 Curl::Multi.http 以返回 m 变量。
见 https://github.com/taf2/curb/blob/master/lib/curl/multi.rb#L85
关于ruby - 当 ruby/curb url 超时时如何退出异步调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22791561/