Terminate process with stacktrace if PipeReaderThread fails

This commit is contained in:
Kristóf Tóth 2018-12-14 16:35:08 +01:00
parent a8d73483cf
commit 300817fe70
1 changed files with 8 additions and 2 deletions

View File

@ -1,10 +1,12 @@
from threading import Thread from threading import Thread
from queue import Queue from queue import Queue
from os import mkfifo, remove from os import mkfifo, remove, getpid, kill
from os.path import exists, join from os.path import exists, join
from signal import SIGTERM
from secrets import token_urlsafe from secrets import token_urlsafe
from collections import namedtuple from collections import namedtuple
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from traceback import print_exc
class PipeWriterThread(Thread): class PipeWriterThread(Thread):
@ -43,7 +45,11 @@ class PipeReaderThread(Thread):
message = pipe.read() message = pipe.read()
if message == self._stop_sequence: if message == self._stop_sequence:
break break
self._message_handler(message) try:
self._message_handler(message)
except:
print_exc()
kill(getpid(), SIGTERM)
def stop(self): def stop(self):
with open(self._pipe_path, 'wb') as pipe: with open(self._pipe_path, 'wb') as pipe: