Sto usando python-daemon e avendo il problema che quando eseguo il processo kill -9
, lascia un file pid dietro (ok) e la volta successiva che eseguo il mio programma non funziona a meno che non abbia già rimosso il file pid a mano (non ok).il contesto python-daemon non viene avviato quando è presente un file PID stantoso
prendo tutte le eccezioni in modo che context.close()
si chiama prima di terminare - quando questo accade (per esempio su un kill
) i file /var/run/mydaemon.pid* vengono rimossi e una successiva corsa daemon riesce. Tuttavia, quando si utilizza SIGKILL (kill -9
), non ho la possibilità di chiamare context.close()
e rimangono i file/var/run. In questo caso, la prossima volta che eseguo il mio programma non si avvia correttamente: il processo originale ritorna, ma il processo demonizzato blocca a context.open()
.
Sembra che python-daemon dovrebbe notare che esiste un file pid per un processo che non esiste più e che lo elimina, ma ciò non sta accadendo. Dovrei farlo a mano?
Nota: non sto utilizzando with
perché questo codice viene eseguito su Python 2,4
from daemon import DaemonContext
from daemon.pidlockfile import PIDLockFile
context = DaemonContext(pidfile = PIDLockFile("/var/run/mydaemon.pid"))
context.open()
try:
retry_main_loop()
except Exception, e:
pass
context.close()
E 'stato due anni fa, quindi la mia memoria è confusa, ma sì, credo che questo è come ho fatto (cosa intendevo per "facendo questo a mano" a cui si fa riferimento nella domanda). Contrassegnare come risposta perché perché no. – kdt