是否可以在不中断连接的情况下使用 python httplib 放置多个请求?就像,我可以将一个大文件分部分上传到服务器,但在一个套接字连接中。
我寻找答案。但似乎没有什么比这更清楚和确定的了。
任何示例/相关链接都会有所帮助。谢谢。
是否可以在不中断连接的情况下使用 python httplib 放置多个请求?就像,我可以将一个大文件分部分上传到服务器,但在一个套接字连接中。
我寻找答案。但似乎没有什么比这更清楚和确定的了。
任何示例/相关链接都会有所帮助。谢谢。
是的,连接保持打开状态,直到您使用该close()
方法关闭它。
以下示例取自httplib 文档,展示了如何使用单个连接执行多个请求:
>>> 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()
您需要确保在响应中调用 .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]),则会引发此异常。