Python urllib2产生僵尸进程

最近发现,Python代码会产生很多僵尸进程,之前未发现,自从使用urllib2模块发Http请求之后,便产生了大量僵尸进程,确定是由于urllib2产生,
原始代码如下:
 req=urllib2.Request(url)
 urllib2.urlopen(req)

最开始,想当然的任务,HTTP请求不是长连接,连接会自动释放,犯了大错,虽然http不是长连接,但是打开连接之后,一些资源还是需要自己关闭,后面将代码修改为:
req=urllib2.Request(url)
response = urllib2.urlopen(req)
response.close()

结果过了一段时间发现,还是会产生僵尸进程,通过日志发现,有很多104的HTTP错误,基本确定是由于http请求失败之后,导致僵尸进程,于是在请求的时候加上超时限制
req=urllib2.Request(url)
response = urllib2.urlopen(req,timeout=10)
response.close()

经过这样修改之后,暂未发现僵尸进程,后续还需继续观察

猜你喜欢

转载自michael8335.iteye.com/blog/1770410