@@ -432,6 +432,12 @@ def status(self) -> Reply:
432432 data = devkeys ,
433433 )
434434
435+ def quit (self ) -> Reply :
436+ """
437+ Passthrough to :func:`reset` for foward compatibility.
438+ """
439+ return self .reset ()
440+
435441 @log_errors
436442 def reset (self ) -> Reply :
437443 """
@@ -444,15 +450,10 @@ def reset(self) -> Reply:
444450 """
445451 logger .info ("resetting all components on this driver" )
446452 for key , dev in self .devmap .items ():
447- if dev .thread .is_alive ():
448- logger .warning ("stopping task on component %s" , key )
449- setattr (dev .thread , "do_run" , False )
450- dev .thread .join (timeout = 1 )
451- if dev .thread .is_alive ():
452- logger .error ("task on component %s is still running" , key )
453- else :
454- logger .debug ("component %s has no running task" , key )
455- self .cmp_reset (key = key )
453+ logger .warning ("stopping task on component %s" , key )
454+ self .task_stop (key = key )
455+ logger .warning ("resetting component %s" , key )
456+ self .cmp_reset (key = key , do_run = False )
456457 return Reply (
457458 success = True ,
458459 msg = "all components on driver have been reset" ,
@@ -498,7 +499,7 @@ def __init__(self, driver, key, **kwargs) -> None:
498499 self .driver = driver
499500 self .key = key
500501 self .task_list = queue .Queue ()
501- self .thread = Thread (target = self .task_runner , daemon = False )
502+ self .thread = Thread (target = self .task_runner , daemon = True )
502503 self .thread .do_run = True
503504 self .thread .do_run_task = False
504505 self .thread .start ()
@@ -534,9 +535,10 @@ def task_runner(self) -> None:
534535
535536 self .running = task
536537 try :
538+ thread .do_run_task = False
537539 if isinstance (task , Task ):
538- thread .do_run_task = True
539540 self .prepare_task (task = task )
541+ thread .do_run_task = True
540542 t_0 = time .perf_counter ()
541543 t_p = t_0
542544 self .data = None
@@ -684,7 +686,7 @@ def reset(self, do_run: bool = True, **kwargs) -> None:
684686 self .data = None
685687 self .datalock = RLock ()
686688 self .task_list = queue .Queue ()
687- self .thread = Thread (target = self .task_runner , daemon = False )
689+ self .thread = Thread (target = self .task_runner , daemon = True )
688690 self .thread .do_run = do_run
689691 self .thread .do_run_task = False
690692 self .thread .start ()
0 commit comments