2009-12-15 100 views
3

是否可以在不中断使用python httplib连接的情况下发出多个请求? 像,我可以上传一个大文件到服务器的部分,但在一个套接字连接。单个连接中的多个请求?

我寻找答案。但是没有一件看起来如此清晰明确。

任何示例/相关链接将是有益的。 谢谢。

回答

11

是的,连接保持打开,直到您使用close()方法关闭它。

下面的例子,从httplib documentation拍摄,展示了如何使用一个连接来执行多个请求:

>>> import httplib 
>>> conn = httplib.HTTPConnection("www.python.org") 
>>> conn.request("GET", "/index.html") 
>>> r1 = conn.getresponse() 
>>> print r1.status, r1.reason 
200 OK 
>>> data1 = r1.read() 
>>> conn.request("GET", "/parrot.spam") 
>>> r2 = conn.getresponse() 
>>> print r2.status, r2.reason 
404 Not Found 
>>> data2 = r2.read() 
>>> conn.close() 
+0

你会介意看看http://stackoverflow.com/questions/18221809/sending-a-few-requests-using-one-connection – 2013-08-14 03:58:58

2

你需要确保调用您回应.read()函数。否则,你会得到这样的错误:

Traceback (most recent call last): 
    File "<pyshell#13>", line 1, in <module> 
    conn.request("GET", "/2.html") 
    File "C:\Python27\lib\httplib.py", line 955, in request 
    self._send_request(method, url, body, headers) 
    File "C:\Python27\lib\httplib.py", line 983, in _send_request 
    self.putrequest(method, url, **skips) 
    File "C:\Python27\lib\httplib.py", line 853, in putrequest 
    raise CannotSendRequest() 
CannotSendRequest 

如果返回的数据没有被读出,引发此异常(即使没有数据返回,或者是收到一个HTTP错误[例如404])。