multiple requests in a single connection?
Is it possible to put multiple requests without breaking the connection using python httplib?. Like, can I upload a big file to the server in parts but in a sing开发者_如何学Gole socket connection.
I looked for answers. But nothing seemed so clear and definite.
Any examples/related links will be helpfull. Thanks.
Yes, the connection stays open until you close it using the close()
method.
The following example, taken from the httplib documentation, shows how to perform multiple requests using a single connection:
>>> 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()
You need to be sure to call the .read() function on your response. Otherwise you'll get an error like:
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
This exception is raised if the return data has not been read (even if no data is returned, or an HTTP error was recieved [a 404 for example]).
精彩评论