require 'net/http'
urls = [
{'link' => 'http://www.google.com/'},
{'link' => 'http://www.yandex.ru/'},
{'link' => 'http://www.baidu.com/'}
]
urls.each do |u|
u['content'] = Net::HTTP.get(URI.parse(u['link']))
end
print urls
此代码以同步样式工作。第一次请求,第二次,第三次。我想异步发送所有请求,并在完成所有请求后打印urls
。异步发出多个HTTP请求
什么是最好的办法呢?纤维是否适合这一点?
好像它的工作原理。但如果15秒后服务器没有响应,如何终止线程? – NVI 2010-01-25 09:13:05
你可以使用'Timeout.timeotu(20)do .... end'。然而,这引发了一个错误,因此您需要对程序流进行一些处理,并且有一种标记方式来标记请求已完成,而不是检查是否存在“内容”键。 – 2010-01-25 11:11:27
Ruby的Net :: HTTP线程安全吗? – Daniel777 2017-05-16 18:38:53