| Current Path : /opt/imh-python/lib/python3.9/site-packages/fabric/ |
| Current File : //opt/imh-python/lib/python3.9/site-packages/fabric/thread_handling.py |
import threading
import six
import sys
class ThreadHandler(object):
def __init__(self, name, callable, *args, **kwargs):
# Set up exception handling
self.exception = None
def wrapper(*args, **kwargs):
try:
callable(*args, **kwargs)
except BaseException:
self.exception = sys.exc_info()
# Kick off thread
thread = threading.Thread(None, wrapper, name, args, kwargs)
thread.setDaemon(True)
thread.start()
# Make thread available to instantiator
self.thread = thread
def raise_if_needed(self):
if self.exception:
e = self.exception
six.reraise(e[0], e[1], e[2])