Fix hanging when loading pretrained models
- Fix hanging when loading pretrained models from the cache without having internet access. This is a widespread issue on supercomputers whose internal compute nodes are firewalled.
This commit is contained in:
@@ -246,7 +246,7 @@ def http_get(url, temp_file, proxies=None):
|
|||||||
progress.close()
|
progress.close()
|
||||||
|
|
||||||
|
|
||||||
def get_from_cache(url, cache_dir=None, force_download=False, proxies=None):
|
def get_from_cache(url, cache_dir=None, force_download=False, proxies=None, etag_timeout=10):
|
||||||
"""
|
"""
|
||||||
Given a URL, look for the corresponding dataset in the local cache.
|
Given a URL, look for the corresponding dataset in the local cache.
|
||||||
If it's not there, download it. Then return the path to the cached file.
|
If it's not there, download it. Then return the path to the cached file.
|
||||||
@@ -266,12 +266,12 @@ def get_from_cache(url, cache_dir=None, force_download=False, proxies=None):
|
|||||||
etag = s3_etag(url, proxies=proxies)
|
etag = s3_etag(url, proxies=proxies)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
response = requests.head(url, allow_redirects=True, proxies=proxies)
|
response = requests.head(url, allow_redirects=True, proxies=proxies, timeout=etag_timeout)
|
||||||
if response.status_code != 200:
|
if response.status_code != 200:
|
||||||
etag = None
|
etag = None
|
||||||
else:
|
else:
|
||||||
etag = response.headers.get("ETag")
|
etag = response.headers.get("ETag")
|
||||||
except EnvironmentError:
|
except (EnvironmentError, requests.exceptions.Timeout):
|
||||||
etag = None
|
etag = None
|
||||||
|
|
||||||
if sys.version_info[0] == 2 and etag is not None:
|
if sys.version_info[0] == 2 and etag is not None:
|
||||||
|
|||||||
Reference in New Issue
Block a user