catch KeyboardInterrupt and sigterm

This commit is contained in:
jb-alvarado 2019-06-06 22:02:20 +02:00
parent cf9bdea606
commit be7f34aa7a

View File

@ -26,6 +26,7 @@ import logging
import os import os
import random import random
import smtplib import smtplib
import signal
import socket import socket
import sys import sys
import time import time
@ -983,6 +984,13 @@ class GetSourceIter(object):
yield self.src_cmd + self.filtergraph yield self.src_cmd + self.filtergraph
def handle_exit(sig, frame):
raise(SystemExit)
signal.signal(signal.SIGTERM, handle_exit)
def main(): def main():
year = get_date(False).split('-')[0] year = get_date(False).split('-')[0]
@ -1036,9 +1044,10 @@ def main():
media = MediaStore(_folder.extensions) media = MediaStore(_folder.extensions)
media.fill(_folder.storage) media.fill(_folder.storage)
MediaWatcher(_folder.storage, _folder.extensions, media) watcher = MediaWatcher(_folder.storage, _folder.extensions, media)
get_source = GetSource(media, _folder.shuffle) get_source = GetSource(media, _folder.shuffle)
try:
for src_cmd in get_source.next(): for src_cmd in get_source.next():
if src_cmd[0] == '-i': if src_cmd[0] == '-i':
current_file = src_cmd[1] current_file = src_cmd[1]
@ -1052,6 +1061,11 @@ def main():
] + src_cmd + ff_pre_settings, ] + src_cmd + ff_pre_settings,
stdout=PIPE) as decoder: stdout=PIPE) as decoder:
copyfileobj(decoder.stdout, encoder.stdin) copyfileobj(decoder.stdout, encoder.stdin)
except (KeyboardInterrupt, SystemExit):
logger.warning('program terminated')
watcher.stop()
decoder.terminate()
encoder.terminate()
finally: finally:
encoder.wait() encoder.wait()