2009-12-15 2 views
3

python httplib?을 사용하여 연결을 끊지 않고 여러 요청을 보낼 수 있습니까? 마찬가지로 큰 파일을 서버에 부분적으로 업로드 할 수 있습니까? 단 하나의 소켓 연결 만 가능합니다.여러 요청이 있습니까?

답변을 찾았습니다. 그러나 아무것도 분명하고 명확하게 보였다.

모든 예제/관련 링크가 도움이 될 것입니다. 감사합니다. .

답변

11

예, 연결은 close() 메서드를 사용하여 닫을 때까지 열려 있습니다. 당신은 당신의 응답에 .read() 함수를 호출해야 할 필요가

>>> 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을 살펴 보시겠습니까? –

2

:

다음의 예는 httplib documentation에서 촬영, 단일 연결을 사용하여 여러 요청을 수행하는 방법을 보여줍니다. 그렇지 않으면 당신과 같은 오류 얻을 것이다 : 리턴 데이터를 읽을되지 않은 경우이 예외가 발생

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).