4ever911
2017-03-07 00:49:26 +08:00
最后发现, 路由器表示不背锅, 是我的程序写的有问题
在 gevent 调用的函数里面,我直接用的 Requests.get 来下载页面,这个方式下不能复用连接,也没有主动去调用关闭,所以程序保持了几千个服务器之间的连接,最后把路由器玩死了。
现在修改成用 session 来 get ,一切完美了,速度也快了好多。
nCount = 50
connection_limit = nCount
adapter = requests.adapters.HTTPAdapter(pool_connections=connection_limit,
pool_maxsize=connection_limit)
session = requests.session()
session.mount('http://', adapter)
fetchpool = Pool(nCount)
for job in jobs:
fetchpool.spawn(self.foobar, session, job)
fetchpool.join()
def foobar(self, session, job):
session.get(......)
不过,之前也没留心,我的路由器也有一些问题,非常不稳定,尤其是 wifi ,干扰严重,即使我已经选择了别人都没有用的 channel