Podstawowe potrzeby: Mam demona Pythona, który wywołuje inny program przez os.system. Moim życzeniem jest być w stanie odpowiednio obsłużyć wyłączenie systemu lub SIGTERM, aby umożliwić wywoływany program wrócić, a następnie wyjść.Jak prawidłowo obsługiwać i zatrzymywać zamknięcie systemu (i SIGTERM), aby zakończyć pracę w języku Python?
Co ja już próbowałem: Próbowałem podejście za pomocą sygnału:
import signal, time
def handler(signum = None, frame = None):
print 'Signal handler called with signal', signum
time.sleep(3)
#here check if process is done
print 'Wait done'
signal.signal(signal.SIGTERM , handler)
while True:
time.sleep(6)
Wykorzystanie time.sleep nie wydaje się działać, a drugi druk nigdy nazywa.
Przeczytałem kilka słów o atexit.register (handler) zamiast signal.signal (signal.SIGTERM, handler), ale nic nie jest wywoływane przy zabijaniu.
Skopiowałem twój kod i działało dobrze. Jaką wersję Pythona używasz, itp? –
Twój kod wydaje się działać. Jakie są wyniki/zachowania, które otrzymujesz? –
Poczekaj sekundę Zbieram to, czego potrzebujesz. – AsTeR