Wie man SIGTERM-Signal anmutig verarbeitet?

Nehmen wir an, wir haben auch so ein trivial-daemon in python geschrieben:

def mainloop():
    while True:
        # 1. do
        # 2. some
        # 3. important
        # 4. job
        # 5. sleep

mainloop()

und wir daemonize es mit start-stop-daemon die standardmäßig sendet SIGTERM (TERM) signal auf --stop.

Nehmen wir an, der aktuelle Schritt ausgeführt wird #2. Und genau in diesem moment schicken wir TERM signal.

Was passiert, ist, dass die Ausführung sofort beendet.

Ich habe festgestellt, dass ich damit umgehen kann das signal-Ereignis mit signal.signal(signal.SIGTERM, handler) aber die Sache ist, dass es immer noch unterbricht die aktuelle Ausführung und übergibt die Kontrolle an handler.

So, meine Frage ist - ist es möglich, nicht unterbrechen, das aktuelle Ausführung, sondern Griff die TERM signal in einem separaten thread (?) so, ich war in der Lage shutdown_flag = True so dass mainloop() eine chance hatte, zu stoppen, anmutig?

InformationsquelleAutor der Frage zerkms | 2013-08-28

Schreibe einen Kommentar