Scrapy爬虫被终止后,再次对表进行操作时,无响应(死锁)问题解决办法

一、问题再现

在运行scrapy爬虫,将大量数据存入到Mysql数据库中时,突然觉得数据太多了,想要将爬虫停掉。
这时你可能会使用Ctrl + Z的方法强制停止掉爬虫,但是当我们再次运行爬虫的时候发现爬虫 停止在写入数据库的地方不继续运行了,并且一直停在那里,如果你在数据库中执行相应的其他操作也会发现一直停在那边等待。

二、问题分析

当我们强制关闭scrapy爬虫后,此时爬虫在终止后,相关的关闭数据连接的操作

pymysql.connect.cursor().close()        #  关闭游标
pymysql.connect.close()					#  断开数据库连接

并没有运行所以导致mysql连接没有关闭,导致Mysql出现了死锁。

三、解决办法

在mysql中执行

mysql > show precesslist; 

显示如下:(其中db为scrapy就是我运来存储爬虫数据的数据库)
在这里插入图片描述
你会发现中间有许多process已经被死锁进入等待。
我们要做的就是杀死这些死锁的进程:

mysql > kill Id号     # 用来杀死那些已经被死锁process。
例如: kill 11  # 将会将Id号为11的那个process干掉	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值