Сделайте urllib повторить несколько раз - PullRequest
2 голосов
/ 28 июня 2010

Мое приложение Python выполняет множество HTTP-запросов с использованием модуля urllib2. Это приложение может использоваться в очень ненадежных сетях, где задержки могут быть низкими, а пропущенные пакеты и сетевые таймауты могут быть очень распространенными. Возможно ли переопределить часть модуля urllib2, чтобы каждый запрос повторялся X раз, прежде чем вызывать какие-либо исключения? Кто-нибудь видел что-то подобное?

Могу ли я добиться этого без изменения всего приложения и создания оболочки над модулем urllib2. Таким образом, любой код, выполняющий запросы с использованием этого модуля, автоматически использует функцию повтора.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 19 августа 2010

Этот вопрос имеет несколько ответов, которые могут быть полезны: Есть ли питонский способ попробовать что-либо до максимального количества раз?

0 голосов
/ 28 июня 2010

Изменение частей библиотеки никогда не является хорошей идеей.

Вы можете написать обертки вокруг методов, которые вы используете для извлечения данных, которые обеспечат желаемое поведение.Это было бы тривиально.

Вы можете, например, определить методы с такими же именами, как в urllib2, в своем собственном модуле под названием myurllib2.Затем просто измените импорт везде, где вы используете urllib2

...