When using python-daemon, I'm creating subprocesses likeso:
import multiprocessing
class Worker(multiprocessing.Process):
   def __init__(self, queue):
      self.queue = queue # we wait for things from this in Worker.run()
   ...
q = multiprocessing.Queue()
with daemon.DaemonContext():
    for i in xrange(3):
       Worker(q)
    while True: # let the Workers do their thing
       q.put(_something_we_wait_for())
When I kill the parent daemonic process (i.e. not a Worker) with a Ctrl-C or SIGTERM, etc., the children don't die. How does one kill the kids?
My first thought is to use atexit to kill all the workers, likeso:
 with daemon.DaemonContext():
    workers = list()
    for i in xrange(3):
       workers.append(Worker(q))
    @atexit.register
    def kill_the_children():
        for w in workers:
            w.terminate()
    while True: # let the Workers do their thing
       q.put(_something_we_wait_for())
However, the children of daemons are tricky things to handle, and I'd be obliged for thoughts and input on how this ought to be done.
Thank you.
 
     
     
     
    