python – Dryscrapewebkit_server内存泄漏

python – Dryscrapewebkit_server内存泄漏,第1张

概述我正在使用dryscrape / webkit_server来抓取启用 javascript的网站. 每次调用session.visit()时,进程webkit_server的内存使用量似乎都会增加.它发生在我身上使用以下脚本: import dryscrapefor url in urls: session = dryscrape.Session() session.set 我正在使用dryscrape / webkit_server来抓取启用 javascript的网站.

每次调用session.visit()时,进程webkit_server的内存使用量似乎都会增加.它发生在我身上使用以下脚本:

import dryscrapefor url in urls:     session = dryscrape.Session()    session.set_timeout(10)    session.set_attribute('auto_load_images',False)    session.visit(url)    response = session.body()

我正在迭代约. 300 urls和70-80 urls之后webkit_server占用大约3GB的内存.然而,对我来说这不是真正的内存问题,但似乎dryscrape / webkit_server在每次迭代时都变得越来越慢.在上述70-80次迭代之后,dryscrape速度很慢,导致超时错误(设置超时= 10秒),我需要中止python脚本.重新启动webkit_server(例如,每30次迭代后)可能会有所帮助并且会清空内存,但是我不确定“内存泄漏”是否真的导致干刮越来越慢.

有谁知道如何重启webkit_server所以我可以测试一下?

我没有为这个问题找到一个可接受的解决方法,但是我也不想切换到另一个解决方案(selenium / phantomJs,ghost.py),因为我简单地喜欢dryscrape. Dryscrape正在努力工作.如果一个人没有在一个会话中迭代过多的网址.

这里也讨论了这个问题

https://github.com/niklasb/dryscrape/issues/41

和这里

Webkit_server (called from python’s dryscrape) uses more and more memory with each page visited. How do I reduce the memory used?

解决方法 内存泄漏我遇到了同样的问题.通过在每次页面查看后重置会话来解决它!

简化的工作流程看起来像这样.

设置服务器:

dryscrape.start_xvfb()sess = dryscrape.Session()

然后遍历Url并在每个url之后重置会话

for url in urls:    sess.set_header('user-agent','Mozilla/5.0 (windows NT 6.4; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/41.0.2225.0 Safari/537.36')    sess.set_attribute('auto_load_images',False)    sess.set_timeout(30)    sess.visit(url)    response = sess.body()    sess.reset()

更新

我仍然遇到内存泄漏问题,更好的答案是@nico提供的问题.

我最终放弃了dryscrape,现在一直在使用Selenium和PhantomJs.仍有内存泄漏,但它们是可管理的.

总结

以上是内存溢出为你收集整理的python – Dryscrape / webkit_server内存泄漏全部内容,希望文章能够帮你解决python – Dryscrape / webkit_server内存泄漏所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1194255.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存