我有一个基于Rails,Watir和chromedriver的解析器。
解析器每分钟运行一次新的chrome实例。每个实例都有不同的代理服务器完成1个解析任务需要5-6分钟。
因此,同时最多可以有6个chrome实例。问题是,chromedriver在尝试生成第5个实例后没有响应,它会杀死所有的chrome进程。
看起来像那样
13:00 - parse start - chromes=1
13:01 - parse start - chromes=2
13:02 - parse start - chromes=3
13:03 - parse start - chromes=4
13:04 - parse start - chrome crashes, all instances killed, chromes=0
13:05 - parse start - chromes=1
日志文件:
08/13 - 02:47 [1407890822] -- !! chrome not reachable
(Session info: chrome=36.0.1985.143)
(Driver info: chromedriver=2.10.267518,platform=Linux 3.13.0-30-generic x86_64)
08/13 - 02:47 [1407890762] -- !! chrome not reachable
(Session info: chrome=36.0.1985.143)
(Driver info: chromedriver=2.10.267518,platform=Linux 3.13.0-30-generic x86_64)
08/13 - 02:47 [1407890702] -- !! chrome not reachable
(Session info: chrome=36.0.1985.143)
(Driver info: chromedriver=2.10.267518,platform=Linux 3.13.0-30-generic x86_64)
尝试使用Firefox,但它有同样的问题,浏览器在产生过程#4后崩溃
代码,即产生浏览器
headless = Headless.new(display: 100, reuse: true, destroy_at_exit: false)
headless.start
proxy_serv = ProxyServer.order(last_use: :asc).first
proxy_address = "#{proxy_serv.ip}:#{proxy_serv.port}"
$browser = Watir::Browser.new :chrome, :switches => ["--proxy-server=#{proxy_address}"]
proxy_serv.update_attribute('last_use', DateTime.now)
OS: Ubuntu
RAM: 32GB
PROC: Intel® Core™ i7-4770
解析运行期间的系统负载 - 2%
答案 0 :(得分:-1)
我听说你是通过javascript触发弹出窗口,然后你可以使用windows
方法访问额外的窗口,然后转到,等等。虽然有点草率