Python的HTTPSConnection.close()似乎没有关闭连接?

1 投票
1 回答
1547 浏览
提问于 2025-04-15 21:10

我不确定这是个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那样真正关闭连接。

撰写回答