socket 多线程运行报错,大佬们帮帮看下

2018-04-24 10:52:12 +08:00
 wjx1993

背景:同时开了几千个线程,运行到 300 多个线程的时间报错了, socket.setdefaulttimeout(45) sleep_download_time = 1 time.sleep(sleep_download_time) 超时和延时都有加上

1、ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。 这个我认为是被服务器拒绝了,被发是爬虫了?

2、socket.timeout: timed out 这个我已经设置了超时的时间,还是报错了

4285 次点击
所在节点    Python
32 条回复
wjx1993
2018-04-24 11:13:02 +08:00
求大佬们帮忙看看,跪求😂
ai277014717
2018-04-24 11:20:29 +08:00
为什么要开着么多线程?是没试过最多可以开多少个线程?
HypoChen
2018-04-24 11:26:03 +08:00
几千个线程去爬,可能不是发现是爬虫了,是发现被 D 了。。。。
wjx1993
2018-04-24 11:27:51 +08:00
@HypoChen 怎么解决这个问题
wjx1993
2018-04-24 11:28:44 +08:00
@ai277014717 多线程效率高啊!怎么解决这个问题・_・?一个线程跑正常
goofool
2018-04-24 11:30:00 +08:00
每个线程一个代理吗?
wjx1993
2018-04-24 11:32:04 +08:00
@goofool 没有用代理,这个还要代理?
A555
2018-04-24 11:33:46 +08:00
@wjx1993 你这样去请求别人 把你 ip 封了
wjx1993
2018-04-24 11:36:18 +08:00
@A555 应该不是封 ip,我重新运行后还是可以跑的,每次重新跑都是大概跑到 300 多线程就保存了
onepunch
2018-04-24 11:40:46 +08:00
你把 sleep 设置的时间长一点
wjx1993
2018-04-24 11:45:57 +08:00
@onepunch 时间设置太久就没意义了,要跑的内容太多了,好几千个线程要等到什么时候?
susecjh
2018-04-24 11:48:24 +08:00
线程多就一定快?想多了
ai277014717
2018-04-24 11:50:49 +08:00
@wjx1993 多线程效率不一定高。nodejs 还是单线程呢。看看磁盘内存 CPU 有没有瓶颈吧。还要考虑到网站服务器的承受能力,有的服务器可能还没个人 pc 的配置高呢。
ericls
2018-04-24 11:55:06 +08:00
爬虫的精髓在于怎么慢 而不是怎么快
changnet
2018-04-24 12:04:44 +08:00
我一直不理解开很多线程的代码逻辑,尤其有些库在测试性能时还开了几百个,难不成大家的 cpu 都是几百上千核的,或者是逻辑都是阻塞写法。开了那么多线程,我的其他逻辑还要不要跑了,三五个线程差不多了。
wjx1993
2018-04-24 12:20:31 +08:00
@changnet 一般上限是 3 万多,但是这个是可以设置的,这个要看你怎么写了
linyinma
2018-04-24 12:20:37 +08:00
@wjx1993
从你的描述很显然啊,远程服务器设置了瞬时并发数啊(如 nginx 添加 nginx_http_limit_conn_module )来限制同一个 ip 来源的连接数,防止恶意攻击访问)
wjx1993
2018-04-24 12:22:10 +08:00
@susecjh 不是说一定快,我是说要爬的内容必须要同时运行,所以才用了多线程
wjx1993
2018-04-24 12:22:56 +08:00
@ericls 太慢的话,还没爬完,数据就没了😂
wjx1993
2018-04-24 12:24:43 +08:00
@linyinma 是不是只有用 ip 代理才可以解决? 那我要怎么设置切换 ip ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/449350

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX