2010-01-30 3 views
4

안녕하세요, 처음 게시글, 나는 정말 httplib2에 붙어 있습니다. 나는 diveintopython3.org에서이 글을 읽었지만 timeout 함수에 대해서는 언급하지 않았다. 나는 문서를 찾는다. 그러나 내가 볼 수있는 유일한 것은 타임 아웃 int를 넣을 수있는 능력이지만 아무 단위도 지정되어 있지 않다. (초? 밀리 초? None이면 기본값은 무엇인가?) 이것은 내가 가지고있는 것이다. (나는 또한 검사 할 코드가있다. 어떤 응답은 다시 시도하지만파이썬 3에서 httplib2를 제대로 사용하고 있습니까? (시간 초과 문제)

h = httplib2.Http('.cache', timeout=None) 
for url in list: 
    response, content = h.request(url) 
    more stuff... 

그래서는 HTTP 객체가 어떤 임의의 시간이 될 때까지 머물 수) 두 번 이상 해본 적이 있어요,하지만 난 후 동일한 서버에서 페이지의 톤을 다운로드하고 있어요 잠시 동안, 그것은 페이지를 얻는 것에 달려있다. 오류가 발생하지 않고 페이지에 멈추게됩니다.

h = httplib2.Http('.cache', timeout=None) 
for url in list: 
    try: 
     response, content = h.request(url) 
    except: 
     h = httplib2.Http('.cache', timeout=None) 
    more stuff... 

그러나 그것은 또 다른 HTTP를 개체마다 다시 만들어 ... 내가이 만료 될 때까지 같은 개체를 얻고 유지하는 방법을 이해 해달라고 I합니다 ('제외'경로 아래로 이동) : 그럼 나는 시도 다른 것을 만들어라. 또한 개별 요청에 대해 시간 초과를 설정하는 방법이 있습니까?

도움 주셔서 감사합니다.

답변

1

시간 제한을 1로 설정하면 1 밀리 초 또는 1 초를 의미하는지 꽤 빨리 알 수 있습니다.

당신의 시도/예외가 해결해야 할 것이 무엇인지 모르겠다. h.request (url)이 한 경우에는 멈추고 다른 하나는 중단되어야한다.

해당 코드에서 메모리가 부족하면 httplib2가 제대로 가비지 수집되지 않습니다. 순환 참조가 있거나 (위와 같지 않더라도) httlib2의 버그 일 수 있습니다.

4

Due to bug httplib2는 초 단위로 제한 시간을 측정했습니다. 에 2를 곱한 값until version 0.7.5 (2012-08-28).

+0

버그가 닫혔습니다. –

+0

변경된 사실에 대한 답변을 알려 주셔서 감사합니다. – Bengt