pip отдельно ограничивает ожидание сокета, попытки нового HTTP-соединения и возобновление незавершенной загрузки. У каждого сбоя свой счетчик.

Начните с журнала

Сохраните -vvv log и определите, зависает ли DNS, TLS handshake, ответ сервера или передача большого wheel, прежде чем увеличивать все значения одновременно.

Меняйте один параметр

По умолчанию timeout равен 15 секундам, retries допускает 5 попыток нового соединения, а resume-retries делает 5 попыток продолжить либо перезапустить оборванную загрузку конкретного файла до окончательной ошибки текущей команды.

python -m pip --timeout 45 --retries 8 install package_name

Оставьте ошибке предел

Слишком большие числа превращают неверный URL или заблокированный firewall в долгий зависший job, поэтому ставьте общий timeout на уровне CI.

После стабилизации верните минимальные рабочие значения и измерьте время успешной установки, чтобы временный сетевой обход не раздувал каждую сборку.

Маршрут через сеть настраивает pip –proxy. Значения перечисляет справочник глобальных опций.