我弄了一个爬虫程序, 没有把服务器爬死,倒是把自己网络经常弄挂,
大概就是用 gevent 创建一个 Pool(50) , 50 个并发,
用 Requests 来迭代 (有打 m onkey patch )
url 大概是接近 10000 个,
速度其实还挺快的, 一秒能处理接近 300 个 requests , for 迭代,没有 sleep
但是现在的问题是,每次连续处理 3000 个左右还好,再多了,经常就把本地网络弄挂了,导致程序也 timeout 退出。
一两分钟内,经常网络也连不上。不知道是不是我程序写的太耗系统资源,可能要稍微在一段任务后休息一下。
现在的解决办法就是, 把任务分成小块,每块大概 2000 个, 每爬了 2000 个就休息几秒。
有没有更科学的方法,或者是我哪里使用不当?
大概就是用 gevent 创建一个 Pool(50) , 50 个并发,
用 Requests 来迭代 (有打 m onkey patch )
url 大概是接近 10000 个,
速度其实还挺快的, 一秒能处理接近 300 个 requests , for 迭代,没有 sleep
但是现在的问题是,每次连续处理 3000 个左右还好,再多了,经常就把本地网络弄挂了,导致程序也 timeout 退出。
一两分钟内,经常网络也连不上。不知道是不是我程序写的太耗系统资源,可能要稍微在一段任务后休息一下。
现在的解决办法就是, 把任务分成小块,每块大概 2000 个, 每爬了 2000 个就休息几秒。
有没有更科学的方法,或者是我哪里使用不当?