flask 写爬虫出现内存不停增大的问题

背景

使用flask写爬虫代码,使用flask-sqlachmery管理数据库

问题描述

刚开始运行代码发现内存一直在增长,以为是内存溢出,不停的审查代码,然而并没有什么变量没回收的地方,加了各种debug,甚至使用gc强行回收都不行,于是开始一行一行的debug调试,观察内存状况,发现在每次session commit的时候都会出现内存大幅度增长,看来问题就出现在了db session这儿了,

解决方案

为啥每次commit后内存会不断增加,而api接口调用时commit session内存不会一直增加呢?于是去看了一下flask-sqlachmery的源码,发现了问题所在

可以看到,在flask_sqlachmery 在init_app时,使用了flask teardown_appcontext装饰器,在每次完成app上下文的时候都会将session删除掉,而我在用flask 写爬虫的时候上下文环境一直没变,也没有主动的去删除session然后重新创建,所有导致session中存储的数据越来越多,内存也就一直增加,找到问题原因就好办了,可以每次访问数据库的时候创建一个session,提交完数据将session回收删除,这样就不会出现内存一直增加的情况了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值