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

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

Спасибо.

2
Mridang Agarwalla 28 Июн 2010 в 12:17

2 ответа

Лучший ответ

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

4
Community 23 Май 2017 в 12:04

Изменение частей библиотеки - плохая идея.

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

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

0
Vasil 28 Июн 2010 в 08:41