mirror of
				https://github.com/clearml/clearml
				synced 2025-06-26 18:16:07 +00:00 
			
		
		
		
	Fix uploading files to S3 when _at_exit() is called fails (work around https://github.com/boto/boto3/issues/3113)
				
					
				
			This commit is contained in:
		
							parent
							
								
									09a53bce48
								
							
						
					
					
						commit
						62a5ef102a
					
				| @ -1591,6 +1591,23 @@ class _Boto3Driver(_Driver): | ||||
|                 Callback=callback, | ||||
|                 ExtraArgs=extra_args, | ||||
|             ) | ||||
|         except RuntimeError: | ||||
|             # one might get an error similar to: "RuntimeError: cannot schedule new futures after interpreter shutdown" | ||||
|             # In this case, retry the upload without threads | ||||
|             try: | ||||
|                 container.bucket.upload_fileobj( | ||||
|                     stream, | ||||
|                     object_name, | ||||
|                     Config=boto3.s3.transfer.TransferConfig( | ||||
|                         use_threads=False, | ||||
|                         num_download_attempts=container.config.retries, | ||||
|                     ), | ||||
|                     Callback=callback, | ||||
|                     ExtraArgs=extra_args, | ||||
|                 ) | ||||
|             except Exception as ex: | ||||
|                 self.get_logger().error("Failed uploading: %s" % ex) | ||||
|                 return False | ||||
|         except Exception as ex: | ||||
|             self.get_logger().error('Failed uploading: %s' % ex) | ||||
|             return False | ||||
| @ -1610,8 +1627,24 @@ class _Boto3Driver(_Driver): | ||||
|                 Callback=callback, | ||||
|                 ExtraArgs=extra_args, | ||||
|             ) | ||||
|         except RuntimeError: | ||||
|             # one might get an error similar to: "RuntimeError: cannot schedule new futures after interpreter shutdown" | ||||
|             # In this case, retry the upload without threads | ||||
|             try: | ||||
|                 container.bucket.upload_file( | ||||
|                     file_path, | ||||
|                     object_name, | ||||
|                     Config=boto3.s3.transfer.TransferConfig( | ||||
|                         use_threads=False, num_download_attempts=container.config.retries | ||||
|                     ), | ||||
|                     Callback=callback, | ||||
|                     ExtraArgs=extra_args, | ||||
|                 ) | ||||
|             except Exception as ex: | ||||
|                 self.get_logger().error("Failed uploading: %s" % ex) | ||||
|                 return False | ||||
|         except Exception as ex: | ||||
|             self.get_logger().error('Failed uploading: %s' % ex) | ||||
|             self.get_logger().error("Failed uploading: %s" % ex) | ||||
|             return False | ||||
|         return True | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user