File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 99 import click
1010 import os
1111 import json
12+ import socket
1213 import urllib
1314 import subprocess
1415 import sonic_device_util
@@ -45,7 +46,8 @@ class URL(object):
4546 PB_INFO_SEPARATOR = " | "
4647 PB_FULL_TERMINAL_WIDTH = 0
4748
48- TMP_PATH = "/tmp"
49+ DOWNLOAD_TIMEOUT = 30
50+ DOWNLOAD_PATH_TEMPLATE = "/tmp/{}"
4951
5052 def __init__ (self , url ):
5153 self .__url = url
@@ -115,13 +117,21 @@ def retrieve(self):
115117 if not extension :
116118 raise RuntimeError ("Filename is malformed: did not find an extension" )
117119
120+ default_timeout = socket .getdefaulttimeout ()
121+ socket .setdefaulttimeout (self .DOWNLOAD_TIMEOUT )
122+
118123 try :
119124 filename , headers = urllib .urlretrieve (
120125 self .__url ,
121- "{}/{}" . format (self . TMP_PATH , basename ),
126+ self . DOWNLOAD_PATH_TEMPLATE . format (basename ),
122127 self .__reporthook
123128 )
129+ except :
130+ if os .path .exists (self .DOWNLOAD_PATH_TEMPLATE .format (basename )):
131+ os .remove (self .DOWNLOAD_PATH_TEMPLATE .format (basename ))
132+ raise
124133 finally :
134+ socket .setdefaulttimeout (default_timeout )
125135 self .__pb_reset ()
126136
127137 return filename , headers
You can’t perform that action at this time.
0 commit comments