原始代码如下:
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()
经过这样修改之后,暂未发现僵尸进程,后续还需继续观察