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

时间:2010-04-02 17:01:43

标签: python https

我不确定这是一个错误还是我做错了什么。如果我要做这样的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()

然后在DOS提示符下,我这样做:

netstat -ano | find /i "192.168.192.196:80" | find /i "ESTABLISHED"

我一无所获。

但是,如果我做同样的事情,但将其更改为HTTPSConnection:

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"

我实际上会看到连接仍然存在,直到我实际上^ Z出了Python shell。

这是我负责的其中一个应用程序中发生的。 Python实际上并没有挂在那里 - 它只是让连接处于打开状态。

我在这里做错了吗?我是否需要额外的代码来关闭HTTPS连接?

这是Python 2.6.4,顺便说一句。

1 个答案:

答案 0 :(得分:0)

事实证明,如果您发送“Connection:close”HTTP标头,这不是问题 - 尽管我仍然认为.close()实际上应该关闭连接,就像它对HTTPConnection一样。