python采集入库时,线程过多就无法连接到数据库

q1550657045 2016-07-30 11:33:34
近2天,在用python爬取数据时发现,如果开8个以上的CMS窗口来爬行数据的话,基本上在1-2分钟后 就会提示如下错误


Traceback (most recent call last):
File "D:\Python27\lib\site-packages\twisted\internet\defer.py", line 577, in _
runCallbacks
current.result = callback(current.result, *args, **kw)
File "d:\pywork\apple6\apple\spiders\crawl.py", line 55, in parse
db = MySQLdb.connect("localhost","root","root","wuba",charset='utf8')
File "D:\Python27\lib\site-packages\MySQLdb\__init__.py", line 81, in Connect
return Connection(*args, **kwargs)
File "D:\Python27\lib\site-packages\MySQLdb\connections.py", line 187, in __in
it__
super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (2003, "Can't connect to MySQL server on 'localhost' (10055)")


导致 原每小时能抓取回来3万条左右,现在只有1万条左右!
...全文
296 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
链接之后输入数据然后你最好自己手动结束链接。
CDSoftwareWj 2016-08-01
  • 打赏
  • 举报
回复
说实在的,高并发并不适合单机的MySQL 需要优化的有多处: 1. mysql需要修改默认最大连接数,这个自己google,两种方法,一改ini文件,二在命令行里改 2. 启用池化资源 这个也可以自己google,但第一条才是最大问题 3. 高并发,可以用其它数据库,key-value型做为抓取数据库一点问题都没有,还可以利用内存
shaode01 2016-07-31
  • 打赏
  • 举报
回复
OperationalError: (2003, "Can't connect to MySQL server on 'localhost' (10061)") 解决方案:   db = MySQLdb.connect(host="127.0.0.1",user="db_username",passwd="db_password",db="db_name") 这是因为在windows上面必须用127.0.0.1指向本地主机,如果用ubantu就没有问题。
shaode01 2016-07-31
  • 打赏
  • 举报
回复
有可能是因为被爬的网站设置了最大连接数

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧