2009-12-15 60 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])。