有没有办法在Ruby中加速OpenUri连接,也许通过以某种方式保持流打开?
以下是我目前正在执行的检索数据的操作:
doc = Nokogiri::HTML( open(url).read )
批处理数千个 URL 时似乎很慢。
如果您使用 OpenURI 处理数千个 URL,那么您使用的是错误的库。相反,您应该查看可以并行处理它们的东西。
我建议你考虑使用Typhoeus和Hydra。Typhoeus是获取URL的代码,Hydra处理多个连接。查看主页上的示例,了解同时运行多个并行连接是多么容易。
运行一些基准测试,以确定主机和互联网连接的饱和点。尝试运行比管道可以处理的连接更多的连接只会浪费 CPU 时间。此外,如果您尝试处理与同一主机的多个连接,请小心,因为您也会占用它们的带宽和 CPU,这是被禁止的好方法。
尝试net-http-persistent
(rubygems,github)。