我有以下代码来运行连续循环以从网站中获取一些内容:
from http.cookiejar import CookieJar
from urllib import request
cj = CookieJar()
cp = request.HTTPCookieProcessor(cj)
hh = request.HTTPHandler()
opener = request.build_opener(cp, hh)
while True:
# build url
req = request.Request(url=url)
p = opener.open(req)
c = p.read()
# process c
p.close()
# check for abort condition, or continue
内容已正确读取。但是由于某种原因,TCP连接不会关闭。我从dd-wrt路由器接口观察到活动的连接数,并且它持续上升。如果脚本继续运行,它将耗尽路由器的4096个连接限制。发生这种情况时,脚本只需进入等待状态(路由器将不允许新的连接,但尚未达到超时)。几分钟后,这些连接将关闭,脚本可以再次恢复。
我能够观察到路由器中那些挂起的连接的状态。它们共享相同的状态:TIME_WAIT。
我期望此脚本同时使用不超过1个TCP连接。我究竟做错了什么?
我在Mac OS X 10.10上使用Python 3.4.2。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句