remove multiprocessing
This commit is contained in:
parent
b36536b48b
commit
5d7505d63a
27
main.py
27
main.py
|
@ -2,8 +2,6 @@
|
||||||
|
|
||||||
import os, time, signal, traceback
|
import os, time, signal, traceback
|
||||||
import RPi.GPIO as GPIO
|
import RPi.GPIO as GPIO
|
||||||
from queue import Queue
|
|
||||||
from multiprocessing.managers import BaseManager
|
|
||||||
|
|
||||||
from auxilary import fallbackLogger
|
from auxilary import fallbackLogger
|
||||||
|
|
||||||
|
@ -18,7 +16,6 @@ def clean():
|
||||||
except NameError:
|
except NameError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# TODO: this part is really wordy and makes me sad
|
|
||||||
try:
|
try:
|
||||||
logger.info('Terminated root process - PID: %s', os.getpid())
|
logger.info('Terminated root process - PID: %s', os.getpid())
|
||||||
logger.stop()
|
logger.stop()
|
||||||
|
@ -27,26 +24,10 @@ def clean():
|
||||||
except Exception:
|
except Exception:
|
||||||
printTrace(traceback.format_exc())
|
printTrace(traceback.format_exc())
|
||||||
|
|
||||||
try:
|
|
||||||
manager.__del__() # kill process 2
|
|
||||||
except NameError:
|
|
||||||
pass
|
|
||||||
except Exception:
|
|
||||||
printTrace(traceback.format_exc())
|
|
||||||
|
|
||||||
def sigtermHandler(signum, stackFrame):
|
def sigtermHandler(signum, stackFrame):
|
||||||
logger.info('Caught SIGTERM')
|
logger.info('Caught SIGTERM')
|
||||||
raise SystemExit
|
raise SystemExit
|
||||||
|
|
||||||
class ResourceManager(BaseManager):
|
|
||||||
def __init__(self):
|
|
||||||
super().__init__()
|
|
||||||
|
|
||||||
self.register('Queue', Queue)
|
|
||||||
|
|
||||||
def __del__(self):
|
|
||||||
self.shutdown()
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
|
@ -54,14 +35,8 @@ if __name__ == '__main__':
|
||||||
GPIO.setwarnings(False)
|
GPIO.setwarnings(False)
|
||||||
GPIO.setmode(GPIO.BCM)
|
GPIO.setmode(GPIO.BCM)
|
||||||
|
|
||||||
manager = ResourceManager()
|
|
||||||
manager.start() # Child process 1
|
|
||||||
|
|
||||||
loggerQueue = manager.Queue() # used to buffer logs
|
|
||||||
ttsQueue = manager.Queue() # used as buffer for TTS Engine
|
|
||||||
|
|
||||||
from sharedLogging import MasterLogger
|
from sharedLogging import MasterLogger
|
||||||
logger = MasterLogger(__name__, 'DEBUG', loggerQueue)
|
logger = MasterLogger(__name__, 'DEBUG')
|
||||||
|
|
||||||
from notifier import criticalError
|
from notifier import criticalError
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,9 @@
|
||||||
import logging, os
|
import logging, os
|
||||||
from subprocess import run, PIPE, CalledProcessError
|
from subprocess import run, PIPE, CalledProcessError
|
||||||
from logging.handlers import TimedRotatingFileHandler, QueueListener, QueueHandler
|
from logging.handlers import TimedRotatingFileHandler
|
||||||
|
|
||||||
from auxilary import fallbackLogger
|
from auxilary import fallbackLogger
|
||||||
|
|
||||||
def SlaveLogger(name, level, queue):
|
|
||||||
logger = logging.getLogger(name)
|
|
||||||
logger.setLevel(getattr(logging, level))
|
|
||||||
logger.addHandler(QueueHandler(queue))
|
|
||||||
logger.propagate = False
|
|
||||||
return logger
|
|
||||||
|
|
||||||
class GlusterFS():
|
class GlusterFS():
|
||||||
def __init__(self, server, volume, mountpoint, options=None):
|
def __init__(self, server, volume, mountpoint, options=None):
|
||||||
if not os.path.exists(mountpoint):
|
if not os.path.exists(mountpoint):
|
||||||
|
@ -46,7 +39,7 @@ class GlusterFS():
|
||||||
raise SystemExit
|
raise SystemExit
|
||||||
|
|
||||||
class MasterLogger():
|
class MasterLogger():
|
||||||
def __init__(self, name, level, queue):
|
def __init__(self, name, level):
|
||||||
mountpoint = '/mnt/glusterfs/pyledriver'
|
mountpoint = '/mnt/glusterfs/pyledriver'
|
||||||
|
|
||||||
self.fs = GlusterFS('192.168.11.39', 'pyledriver', mountpoint, 'backupvolfile-server=192.168.11.48')
|
self.fs = GlusterFS('192.168.11.39', 'pyledriver', mountpoint, 'backupvolfile-server=192.168.11.48')
|
||||||
|
@ -70,18 +63,14 @@ class MasterLogger():
|
||||||
self.rotatingFile = TimedRotatingFileHandler(logdest + '/pyledriver-log', when='midnight')
|
self.rotatingFile = TimedRotatingFileHandler(logdest + '/pyledriver-log', when='midnight')
|
||||||
self.rotatingFile.setFormatter(fileFormat)
|
self.rotatingFile.setFormatter(fileFormat)
|
||||||
|
|
||||||
logging.basicConfig(level=getattr(logging, level), handlers=[QueueHandler(queue)])
|
logging.basicConfig(level=getattr(logging, level), handlers=[console, self.rotatingFile])
|
||||||
logger = logging.getLogger(name)
|
logger = logging.getLogger(name)
|
||||||
|
|
||||||
# since the logger module sucks and doesn't allow me to init
|
# since the logger module sucks and doesn't allow me to init
|
||||||
# a logger in a subclass, need to "fake" object inheritance
|
# a logger in a subclass, need to "fake" object inheritance
|
||||||
for i in ['debug', 'info', 'warning', 'error', 'critical']:
|
for i in ['debug', 'info', 'warning', 'error', 'critical']:
|
||||||
setattr(self, i, getattr(logger, i))
|
setattr(self, i, getattr(logger, i))
|
||||||
|
|
||||||
self.queListener = QueueListener(queue, console, self.rotatingFile)
|
|
||||||
self.queListener.start()
|
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
self.queListener.stop()
|
|
||||||
self.rotatingFile.close() # must close file stream before unmounting
|
self.rotatingFile.close() # must close file stream before unmounting
|
||||||
self.fs.unmount()
|
self.fs.unmount()
|
||||||
|
|
Loading…
Reference in New Issue