Python的HTTPSConnection.close()似乎没有关闭连接?
我不确定这是个bug,还是我自己做错了什么。如果我这样进行HTTP连接:
import httplib
http_connection = httplib.HTTPConnection("192.168.192.196")
http_connection.request("GET", "/")
http_connection.sock.settimeout(20)
response = http_connection.getresponse()
data = response.read()
http_connection.close()
然后在命令提示符下,我执行这个:
netstat -ano | find /i "192.168.192.196:80" | find /i "ESTABLISHED"
结果什么都没有。
但是,如果我做同样的事情,只是把它改成HTTPS连接:
import httplib
http_connection = httplib.HTTPSConnection("192.168.192.196")
http_connection.request("GET", "/")
http_connection.sock.settimeout(20)
response = http_connection.getresponse()
data = response.read()
http_connection.close()
然后执行这个:
netstat -ano | find /i "192.168.192.196:443" | find /i "ESTABLISHED"
我会发现连接一直保持着,直到我在Python环境中按下^Z退出。
这发生在我负责的一个应用程序中。其实Python并没有卡住,它只是保持着连接。
我是不是做错了什么?我需要额外的代码来关闭HTTPS连接吗?
顺便说一下,这是Python 2.6.4版本。
1 个回答
0
结果发现,如果你发送“Connection: close”这个HTTP头信息,就不会出现这个问题了。不过我还是觉得,.close()这个方法应该像HTTPConnection那样真正关闭连接。