Quando si utilizza python-daemon, sto creando sottoprocessi likeso:Python-daemon non uccide i suoi figli
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())
Quando ho uccidere il processo demoniaca genitore (cioè non un operaio), con un Ctrl-C o SIGTERM , ecc., i bambini non muoiono. Come si uccidono i bambini?
Il mio primo pensiero è quello di utilizzare atexit uccidere tutti i lavoratori, 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())
Tuttavia, i figli di demoni sono cose difficili da gestire, e mi piacerebbe essere obbligato per i pensieri e input su come questo dovrebbe essere fatto.
Grazie.
Uccidere i tuoi figli sembra una cosa da "demoniaca" da fare ... – ewall
Definitivamente. Questo daemon è * non * fino alle specifiche. –
Non è questo Python?Non puoi semplicemente fare "dal male import infanticide" o qualcosa del genere? – Syntactic