Python中Scrapy在1G内存环境下是否无法发挥工作?
Scrapy 在 1G 内存的环境下是不是无法发挥工作呢?尝试了三次,在运行一段时间(一小时以上)之后就是遇到 OOM。 可能代码逻辑有问题?
# 从一个入口站点入手,获取全部的 a 标签。再然后循环。
for url in response.xpath('//a/@href').extract():
# 存取 title 之类
yield item
yield scrapy.Request(url,callback=self.parse, dont_filter=True)
谢谢指导
Python中Scrapy在1G内存环境下是否无法发挥工作?
我在我的阿里云 1g 内存的服务器上跑过半个月都没有问题
我无法理解你的问题。
可能我的姿势不对。求指教。
没有错误。直接被 kill 了。/var/log/message 中记录 OOM kill
检查自己的代码把,这个应该是你代码内存泄漏了
你都不贴出整个项目,我没出现过这个错误
不好意思,我看了一下,好像这代码也没什么保密价值。哈哈。
scrapy 的日志看了吗,没有的话就设置成 debug 级别的,再运行一次,期间你可以去 scrapy 的 github 项目,搜搜有没有 issue 出现过和你一样的问题。
谢谢啦,
日志方面除了在插入到数据库时会报唯一限制的错误,没有其他关于 scrapy 的报错,最后一次,我盯着它在我眼皮底下直接就被 kill 掉。
/var/log/message 中的记录<br>kernel: Out of memory: Kill process 2454 (scrapy) score 333 or sacrifice child<br>kernel: Killed process 2454 (scrapy) total-vm:999536kB, anon-rss:346860kB, file-rss:1176kB, shmem-rss:0kB<br>
能发一下内存监控之内吗?
遍历所有在需求 domain 里 a[href], generator 应该不小, 你换一下 PickleFifoDiskQueue 试试
用 yield 就是迭代器, 之前的对象都不会释放的。
内存监控这块,我没有监控,我也是在他 kill 掉我才去看 log 的。我试一下您说的这个。谢谢
ps aux | grep python
运行一阵后看下有几个 py 进程


