在一个小型测试项目中,我尝试测试远程代理服务器。我们有一个客户端在与代理服务器通信的本地计算机上运行。我已经设置了我的python代码,就像这样谈论客户端:
proxy_handler = urllib.request.ProxyHandler({'http': 'http://localhost:' + self.proxy_port})
opener = urllib.request.build_opener(proxy_handler)
urllib.request.install_opener(opener)
然后我有代码打开url并一次读取N个字节:
try:
video_stream = urllib.request.urlopen(self.url, timeout=10)
while something_is_true:
data = video_stream.read(bucket_size)
except URLError:
# handle errors
except Exception:
# handle errors
我遇到的问题是我可以开始测试并让它运行几分钟。在此期间,我可以关闭远程代理,代码继续从video_stream
连接读取。没有例外被抛出。
如果我从一开始就关闭了远程代理的代码,那么urlopen()
就失败了,这是我所期待的。但是如果我在运行期间停止远程代理,我也会期望read()
失败。