Add _use_daemons flag to XMLStream to run all threads in daemon mode.
This WILL make the Python interpreter produce exceptions on shutdown.
This commit is contained in:
		| @@ -121,7 +121,7 @@ class Scheduler(object): | ||||
|         #: Lock for accessing the task queue. | ||||
|         self.schedule_lock = threading.RLock() | ||||
|  | ||||
|     def process(self, threaded=True): | ||||
|     def process(self, threaded=True, daemon=False): | ||||
|         """Begin accepting and processing scheduled tasks. | ||||
|  | ||||
|         :param bool threaded: Indicates if the scheduler should execute | ||||
| @@ -130,6 +130,7 @@ class Scheduler(object): | ||||
|         if threaded: | ||||
|             self.thread = threading.Thread(name='scheduler_process', | ||||
|                                            target=self._process) | ||||
|             self.thread.daemon = daemon | ||||
|             self.thread.start() | ||||
|         else: | ||||
|             self._process() | ||||
|   | ||||
| @@ -282,6 +282,7 @@ class XMLStream(object): | ||||
|         self.__event_handlers = {} | ||||
|         self.__event_handlers_lock = threading.Lock() | ||||
|         self.__filters = {'in': [], 'out': [], 'out_sync': []} | ||||
|         self._use_daemons = False | ||||
|  | ||||
|         self._id = 0 | ||||
|         self._id_lock = threading.Lock() | ||||
| @@ -1206,10 +1207,11 @@ class XMLStream(object): | ||||
|         else: | ||||
|             threaded = kwargs.get('threaded', True) | ||||
|  | ||||
|         self.scheduler.process(threaded=True) | ||||
|         self.scheduler.process(threaded=True, daemon=self._use_daemons) | ||||
|  | ||||
|         def start_thread(name, target): | ||||
|             self.__thread[name] = threading.Thread(name=name, target=target) | ||||
|             self.__thread[name].daemon = self._use_daemons | ||||
|             self.__thread[name].start() | ||||
|  | ||||
|         for t in range(0, HANDLER_THREADS): | ||||
| @@ -1451,6 +1453,7 @@ class XMLStream(object): | ||||
|                                     name="Event_%s" % str(func), | ||||
|                                     target=self._threaded_event_wrapper, | ||||
|                                     args=(func, args)) | ||||
|                             x.daemon = self._use_daemons | ||||
|                             x.start() | ||||
|                         else: | ||||
|                             func(*args) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Lance Stout
					Lance Stout