http.client.HTTPConnection的close()函数不起作用?

时间:2013-12-27 08:08:32

标签: python http python-3.x websocket

我使用的Python版本是3.3。 假设我无法通过关闭连接发送http请求。但实际上,它在调用close()函数后仍然有效。这是我的代码:

conn = http.client.HTTPConnection("192.168.8.186:8081")  
conn.request("GET", "")  
response = conn.getresponse()  
data = response.read()  
data  
b"403 Forbidden \nRequest forbidden by administrative rules.\n\n'"
conn.close()   #??? 
conn.request("GET", "")  
(conn.getresponse()).read()  
b'403 Forbidden\nRequest forbidden by administrative rules.\n\n'

1 个答案:

答案 0 :(得分:3)

HTTPConnection的代码来看,似乎request调用会调用send,如果没有打开则会打开连接:

def send(self, data):
    """Send `data' to the server."""
    if self.sock is None:
        if self.auto_open:
            self.connect()
        else:
            raise NotConnected()
    ...

从这段代码中可以看出,将auto_open标志设置为0(默认情况下为1)可以避免此行为。在这种情况下,您可能需要自己调用connect函数。

这是基于我的Python 2.7.3代码。