Правильно использовать httplib2 в python 3? (Проблемы тайм-аута)

Эй, первый пост, я действительно застрял на httplib2. Я читал об этом на сайте www.diveintopython3.org, но там ничего не говорится о функции тайм-аута. Я просматриваю документацию, но единственное, что я вижу, это возможность установить тайм-аут int, но не указаны единицы измерения (секунды? миллисекунды? Что по умолчанию, если None?) Это то, что у меня есть (у меня также есть код для проверки какой ответ и попробуйте еще раз, но это никогда не пробовали больше одного раза)

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 (идет по пути «кроме») ... Я не понимаю, как продолжать работать с одним и тем же объектом, пока он не истечет, и я создам другой. Кроме того, есть ли способ установить тайм-аут для отдельного запроса?

Спасибо за помощь!


person VolatileRig    schedule 30.01.2010    source источник


Ответы (2)


Установите тайм-аут на 1, и вы довольно быстро узнаете, означает ли это одну миллисекунду или одну секунду.

Я не знаю, что должен решить ваш try/except, если он зависает на h.request(url) в одном случае, он должен висеть в другом.

Если у вас заканчивается память в этом коде, то httplib2 не собирает мусор должным образом. Возможно, у вас есть циклические ссылки (хотя выше это не похоже на это), или это может быть ошибка в httlib2.

person Lennart Regebro    schedule 30.01.2010

Из-за ошибки httplib2 измерил время ожидания в секундах, умноженное на на 2 пока версия 0.7.5 (28 августа 2012 г.).

person Bengt    schedule 24.07.2012
comment
Ошибка теперь закрыта - person Cyril N.; 19.12.2013