Ogni ricetta che ho trovato per la creazione di un processo demone in Python prevede due volte la forking (per Unix) e quindi la chiusura di tutti i descrittori di file aperti. (Vedere http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/ per un esempio).Mantenimento della registrazione e/o stdout/stderr in Python Daemon
Questo è tutto abbastanza semplice ma mi sembra di avere un problema. Sul sistema di produzione che sto configurando, il mio demone sta abortendo - silenziosamente dal momento che tutti i descrittori di file aperti sono stati chiusi. Sto avendo un momento difficile debuggare il problema al momento e mi chiedo quale sia il modo corretto per catturare e registrare questi errori.
Qual è il modo corretto di configurare la registrazione in modo che continui a funzionare dopo il daemonizzazione? Devo chiamare lo logging.basicConfig()
una seconda volta dopo il demonizzazione? Qual è il modo giusto per acquisire stdout
e stderr
? Sono sfocato sui dettagli del perché tutti i file sono chiusi. Idealmente, il mio codice principale potrebbe semplicemente chiamare daemon_start(pid_file)
e la registrazione continuerà a funzionare.
Chiamare la configurazione di registrazione DOPO la demonizzazione è davvero la strada da percorrere. – Exelian
Ho notato questo commento nei documenti di registrazione: "Questa funzione non fa nulla se il registratore di root ha già configurato gestori per esso." Se voglio registrare prima e dopo la demonizzazione, come influisce sulla situazione? –
Se sono corretto, è possibile aggiungere gestori/filtri dopo l'inizializzazione del registratore. Ciò significa che è possibile aggiungere un FileHandler prima di avviare il contesto daemon e aggiungerne un altro dopo averlo avviato. Non sono del tutto sicuro che questo funzioni comunque. – Exelian