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
。
最好的方法是什么?Fiber适用于此吗?
Timeout.timeout(20) do .... end
。不过这会抛出一个错误,因此你需要处理程序的流程,并且有一种标记请求已完成的方法,而不是检查content
键是否存在。 - August Lilleaas