@@ -142,7 +142,7 @@ def __init__(self, address, port, log_func=None, timeout=20):
142142 "receive magic number" ) from timeout_error
143143 self ._send (struct .pack ("=i" , CHUNKSIZE ))
144144 self ._log_func = log_func
145- self ._last_time = time .time ()
145+ self ._last_time = time .monotonic ()
146146 self ._last_transferred = 0
147147 self .transferred = 0
148148
@@ -170,10 +170,10 @@ def _send(self, data, timeout=60):
170170
171171 def _receive (self , size , timeout = 60 ):
172172 strs = []
173- end_time = time .time () + timeout
173+ end_time = time .monotonic () + timeout
174174 try :
175175 while size > 0 :
176- timeout = end_time - time .time ()
176+ timeout = end_time - time .monotonic ()
177177 if timeout <= 0 :
178178 raise socket .timeout
179179 self ._socket .settimeout (timeout )
@@ -195,14 +195,14 @@ def _receive(self, size, timeout=60):
195195
196196 def _report_stats (self , data ):
197197 if self ._log_func :
198- delta = time .time () - self ._last_time
198+ delta = time .monotonic () - self ._last_time
199199 if delta >= 1 :
200200 transferred = self .transferred / 1048576.
201201 speed = (self .transferred - self ._last_transferred ) / delta
202202 speed /= 1048576.
203203 self ._log_func (f"{ data } { transferred :.3f} MB ({ speed :.3f} "
204204 " MB/sec)" )
205- self ._last_time = time .time ()
205+ self ._last_time = time .monotonic ()
206206 self ._last_transferred = self .transferred
207207
208208 def _send_packet (self , data , timeout = 60 ):
@@ -224,10 +224,10 @@ def _send_file_chunks(self, filename, timeout=60):
224224 self ._log_func (f"Sending file { filename } " )
225225 with open (filename , "rb" ) as file_handle :
226226 try :
227- end_time = time .time () + timeout
227+ end_time = time .monotonic () + timeout
228228 while True :
229229 data = file_handle .read (CHUNKSIZE )
230- self ._send_packet (data , int (end_time - time .time ()))
230+ self ._send_packet (data , int (end_time - time .monotonic ()))
231231 if len (data ) < CHUNKSIZE :
232232 break
233233 except FileTransferError as error :
@@ -239,9 +239,9 @@ def _receive_file_chunks(self, filename, timeout=60):
239239 self ._log_func (f"Receiving file { filename } " )
240240 with open (filename , "wb" ) as file_handle :
241241 try :
242- end_time = time .time () + timeout
242+ end_time = time .monotonic () + timeout
243243 while True :
244- data = self ._receive_packet (int (end_time - time .time ()))
244+ data = self ._receive_packet (int (end_time - time .monotonic ()))
245245 file_handle .write (data )
246246 if len (data ) < CHUNKSIZE :
247247 break
@@ -299,7 +299,7 @@ def _upload_file(self, path, end_time):
299299 if os .path .isfile (path ):
300300 self ._send_msg (RSS_CREATE_FILE )
301301 self ._send_packet (os .path .basename (path ).encode ())
302- self ._send_file_chunks (path , end_time - time .time ())
302+ self ._send_file_chunks (path , end_time - time .monotonic ())
303303 elif os .path .isdir (path ):
304304 self ._send_msg (RSS_CREATE_DIR )
305305 self ._send_packet (os .path .basename (path ).encode ())
@@ -342,7 +342,7 @@ def upload(self, src_pattern, dst_path, timeout=600):
342342 message to the client
343343 :note: Other exceptions can be raised.
344344 """
345- end_time = time .time () + timeout
345+ end_time = time .monotonic () + timeout
346346 try :
347347 try :
348348 self ._send_msg (RSS_SET_PATH )
@@ -362,7 +362,7 @@ def upload(self, src_pattern, dst_path, timeout=600):
362362 "does not match any files "
363363 "or directories" )
364364 # Look for RSS_OK or RSS_ERROR
365- msg = self ._receive_msg (int (end_time - time .time ()))
365+ msg = self ._receive_msg (int (end_time - time .monotonic ()))
366366 if msg == RSS_OK :
367367 return
368368 if msg == RSS_ERROR :
@@ -438,7 +438,7 @@ def download(self, src_pattern, dst_path, timeout=600):
438438 :note: Other exceptions can be raised.
439439 """
440440 dst_path = os .path .abspath (dst_path )
441- end_time = time .time () + timeout
441+ end_time = time .monotonic () + timeout
442442 file_count = 0
443443 dir_count = 0
444444 try :
@@ -454,7 +454,7 @@ def download(self, src_pattern, dst_path, timeout=600):
454454 filename = self ._receive_packet ().decode ()
455455 if os .path .isdir (dst_path ):
456456 dst_path = os .path .join (dst_path , filename )
457- self ._receive_file_chunks (dst_path , int (end_time - time .time ()))
457+ self ._receive_file_chunks (dst_path , int (end_time - time .monotonic ()))
458458 dst_path = os .path .dirname (dst_path )
459459 file_count += 1
460460 elif msg == RSS_CREATE_DIR :
0 commit comments