我使用 ruby gem curl 的 curl 在多线程环境下获取多个 url,但它会抛出“无效的简单处理”异常,但如果它在单线程环境中一一运行,一切正常。
module Http
@@curl = Curl::Easy.new
@@curl.timeout = 10 #second
@@curl.follow_location = true
@@curl.max_redirects = 3
@@options = Robot::HttpOptions.new
def self.fetch(url, options=@@options, type=Robot::Type::HTML)
@@curl.url = URI.unescape(url)==url ? URI.escape(url) : url
@@curl.headers["User-Agent"] = options.user_agent
begin
@@curl.perform
rescue Curl::Err::CurlError
raise
end
end
end
self.fetch 在多线程环境中调用。
有人可以帮我做这件事吗?谢谢你。