@@ -143,7 +143,7 @@ def __init__(self, address, port, log_func=None, timeout=20):
143143 ) from timeout_error
144144 self ._send (struct .pack ("=i" , CHUNKSIZE ))
145145 self ._log_func = log_func
146- self ._last_time = time .time ()
146+ self ._last_time = time .monotonic ()
147147 self ._last_transferred = 0
148148 self .transferred = 0
149149
@@ -173,10 +173,10 @@ def _send(self, data, timeout=60):
173173
174174 def _receive (self , size , timeout = 60 ):
175175 strs = []
176- end_time = time .time () + timeout
176+ end_time = time .monotonic () + timeout
177177 try :
178178 while size > 0 :
179- timeout = end_time - time .time ()
179+ timeout = end_time - time .monotonic ()
180180 if timeout <= 0 :
181181 raise socket .timeout
182182 self ._socket .settimeout (timeout )
@@ -202,15 +202,15 @@ def _receive(self, size, timeout=60):
202202
203203 def _report_stats (self , data ):
204204 if self ._log_func :
205- delta = time .time () - self ._last_time
205+ delta = time .monotonic () - self ._last_time
206206 if delta >= 1 :
207207 transferred = self .transferred / 1048576.0
208208 speed = (self .transferred - self ._last_transferred ) / delta
209209 speed /= 1048576.0
210210 self ._log_func (
211211 f"{ data } { transferred :.3f} MB ({ speed :.3f} " " MB/sec)"
212212 )
213- self ._last_time = time .time ()
213+ self ._last_time = time .monotonic ()
214214 self ._last_transferred = self .transferred
215215
216216 def _send_packet (self , data , timeout = 60 ):
@@ -232,10 +232,10 @@ def _send_file_chunks(self, filename, timeout=60):
232232 self ._log_func (f"Sending file { filename } " )
233233 with open (filename , "rb" ) as file_handle :
234234 try :
235- end_time = time .time () + timeout
235+ end_time = time .monotonic () + timeout
236236 while True :
237237 data = file_handle .read (CHUNKSIZE )
238- self ._send_packet (data , int (end_time - time .time ()))
238+ self ._send_packet (data , int (end_time - time .monotonic ()))
239239 if len (data ) < CHUNKSIZE :
240240 break
241241 except FileTransferError as error :
@@ -247,9 +247,9 @@ def _receive_file_chunks(self, filename, timeout=60):
247247 self ._log_func (f"Receiving file { filename } " )
248248 with open (filename , "wb" ) as file_handle :
249249 try :
250- end_time = time .time () + timeout
250+ end_time = time .monotonic () + timeout
251251 while True :
252- data = self ._receive_packet (int (end_time - time .time ()))
252+ data = self ._receive_packet (int (end_time - time .monotonic ()))
253253 file_handle .write (data )
254254 if len (data ) < CHUNKSIZE :
255255 break
@@ -306,7 +306,7 @@ def _upload_file(self, path, end_time):
306306 if os .path .isfile (path ):
307307 self ._send_msg (RSS_CREATE_FILE )
308308 self ._send_packet (os .path .basename (path ).encode ())
309- self ._send_file_chunks (path , end_time - time .time ())
309+ self ._send_file_chunks (path , end_time - time .monotonic ())
310310 elif os .path .isdir (path ):
311311 self ._send_msg (RSS_CREATE_DIR )
312312 self ._send_packet (os .path .basename (path ).encode ())
@@ -349,7 +349,7 @@ def upload(self, src_pattern, dst_path, timeout=600):
349349 message to the client
350350 :note: Other exceptions can be raised.
351351 """
352- end_time = time .time () + timeout
352+ end_time = time .monotonic () + timeout
353353 try :
354354 try :
355355 self ._send_msg (RSS_SET_PATH )
@@ -371,7 +371,7 @@ def upload(self, src_pattern, dst_path, timeout=600):
371371 "or directories"
372372 )
373373 # Look for RSS_OK or RSS_ERROR
374- msg = self ._receive_msg (int (end_time - time .time ()))
374+ msg = self ._receive_msg (int (end_time - time .monotonic ()))
375375 if msg == RSS_OK :
376376 return
377377 if msg == RSS_ERROR :
@@ -446,7 +446,7 @@ def download(self, src_pattern, dst_path, timeout=600):
446446 :note: Other exceptions can be raised.
447447 """
448448 dst_path = os .path .abspath (dst_path )
449- end_time = time .time () + timeout
449+ end_time = time .monotonic () + timeout
450450 file_count = 0
451451 dir_count = 0
452452 try :
@@ -463,7 +463,7 @@ def download(self, src_pattern, dst_path, timeout=600):
463463 if os .path .isdir (dst_path ):
464464 dst_path = os .path .join (dst_path , filename )
465465 self ._receive_file_chunks (
466- dst_path , int (end_time - time .time ())
466+ dst_path , int (end_time - time .monotonic ())
467467 )
468468 dst_path = os .path .dirname (dst_path )
469469 file_count += 1
0 commit comments