2015-10-15 45 views
0

我正在使用Rails 4制作网络抓取应用程序。我选择了capybara-webkit作为浏览器引擎。它看起来刮的应用程序运行良好,我可以解析我需要的数据。Capybara-webkit需要大量的内存。我怎么能释放它?

问题是内存。称为“webkit-server”的过程在我的应用程序执行其刮取过程时留下了很多回忆,并且我假设capybra-webkit正以某种方式使用该过程。

因为它往往会在刮几百页后占用大约1GB,我想限制/清除内存占用。有没有办法做到这一点?

看起来Selenium没有内存问题(一直占用不超过300mb左右),但运行速度比webkit慢。

回答

0

您需要偶尔在驱动程序实例上运行reset!

该驱动程序是用自动化测试套件来编写的,它不会执行某种清理,直到调用reset!。它通常在每次测试之间调用。

如果在调用reset!之后进程占用了不寻常的内存量,那么您在驱动程序中发现了一个错误。

+0

我试图拨打 Capybara.reset_sessions! 我的应用程序保存了一些记录后。 重置正在工作,但它看起来重置!清除每个会话数据,包括登录信息,我需要再次登录会话(控制台说,它找不到一些可以在页面中找到的元素,如果它可以通过登录会话)... 乔,无论如何。 –

+0

可能是我可以添加新的代码,尝试在几次爬行会话后重置会话。 –

相关问题