3

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

我寻找答案。但似乎没有什么比这更清楚和确定的了。

任何示例/相关链接都会有所帮助。谢谢。

4

2 回答 2

12

是的,连接保持打开状态,直到您使用该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()
于 2009-12-15T09:23:37.997 回答
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]),则会引发此异常。

于 2012-04-05T18:38:29.030 回答