in s3transfer/processpool.py [0:0]
def result(self):
try:
return self._monitor.poll_for_result(self._meta.transfer_id)
except KeyboardInterrupt:
# For the multiprocessing Manager, a thread is given a single
# connection to reuse in communicating between the thread in the
# main process and the Manager's process. If a Ctrl-C happens when
# polling for the result, it will make the main thread stop trying
# to receive from the connection, but the Manager process will not
# know that the main process has stopped trying to receive and
# will not close the connection. As a result if another message is
# sent to the Manager process, the listener in the Manager
# processes will not process the new message as it is still trying
# trying to process the previous message (that was Ctrl-C'd) and
# thus cause the thread in the main process to hang on its send.
# The only way around this is to create a new connection and send
# messages from that new connection instead.
self._monitor._connect()
self.cancel()
raise