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. Значения перечисляет справочник глобальных опций.