I've only seen this once so far, but I ran into the following. The way our pip_download.py script works, it doesn't follow redirects.
I'm testing the two-line diff below. 2018-04-16 10:27:32.113099 Getting package info from https://pypi.python.org/simple/allpairs/ 2018-04-16 10:27:32.113258 Downloading AllPairs-2.0.1.tar.gz from https://pypi.python.org/packages/04/44/cb85d029b33ddfa7b5a27ae523434c2230f11a89d1f0c73203e9007a6eb0/AllPairs-2.0.1.tar.gz 2018-04-16 10:27:32.113320 ('http error', 302, 'Found', <httplib.HTTPMessage instance at 0x7f180a42a128>) 2018-04-16 10:27:32.113359 Sleeping for 15 seconds before retrying diff --git infra/python/deps/pip_download.py infra/python/deps/pip_download.py index 6fbb683..0cce9e9 100755 --- infra/python/deps/pip_download.py +++ infra/python/deps/pip_download.py @@ -28,7 +28,7 @@ import re import sys from random import randint from time import sleep -from urllib import urlopen, URLopener +from urllib import urlopen, FancyURLopener NUM_DOWNLOAD_ATTEMPTS = 8 @@ -114,7 +114,7 @@ def download_package(pkg_name, pkg_version): expected_digest): print 'File with matching digest already exists, skipping {0}'.format(file_name) return True - downloader = URLopener() + downloader = FancyURLopener() pkg_url = '{0}/packages/{1}'.format(PYPI_MIRROR, path) print 'Downloading {0} from {1}'.format(file_name, pkg_url) downloader.retrieve(pkg_url, file_name)