def startManagedProcess(name): if name in running or name not in managedProcesses: return process = managedProcesses[name] loggerINFO(f"starting python process {process}") running[name] = Process(name=name, target=launcher, args=(process, )) running[name].start()
def newDevicesScoutThread(): portReplierDevicesManager = "5555" newDevicesAnnouncer = Requester(portReplierDevicesManager) permanentListOfAcceptedDevices = [] while True: newDevice = discoverNewDevices() # blocking call, it returns only when there is a new Device #newDeviceAddress = "12:34:AB:CD" replyFromDevicesManager = newDevicesAnnouncer.send(newDevice) loggerINFO(Fore.RED + "newDEVICES scout"+ Style.RESET_ALL + f"replyFromDevicesManager: {replyFromDevicesManager} ") time.sleep(2)
def managerThread(): loggerDEBUG(f"starting manager thread") # Get thermal status through messaging -- msg = messaging.recv_sock(thermal_sock, wait=True) # heavyweight batch processes run only when thermal conditions are favorable thermalStatusCritical = False loggerINFO(f"green Temp Processes {greenTempProcesses}") if thermalStatusCritical: for p in greenTempProcesses: if p in persistentProcesses: killManagedProcess(p) else: for p in greenTempProcesses: startManagedProcess(p)
def preImportMethods(): for i, p in enumerate(managedProcesses): process = managedProcesses[p] loggerINFO(f"process number {i}, preimporting {process}") importlib.import_module(process)
def killManagedProcess(name): loggerINFO(f"killing python process {process}")
import os, sys, time # pylint: disable=import-error from crontab.crontabSetup import minuteTrigger from rpi.rpiSetup import setHostname from internet.internet import ensureInternet #from odoo.gate import gateInit from multiprocessing import Process, Manager #import logging, logging.config from launcher import launcher from log.logger import loggerDEBUG, loggerINFO, loggerWARNING, loggerERROR, loggerCRITICAL import importlib loggerINFO(f'running on python version: {sys.version}') managedProcesses = { "bluetoothConnection": "bluetooth.bluetooth", #"devicesManager": "bluetooth.devicesManager", #"newDevicesScout": "bluetooth.newDevicesScout", } greenTempProcesses = managedProcesses persistentProcesses = greenTempProcesses running = {} def defineDirectories(): dirPath = os.path.dirname(os.path.realpath(__file__)) loggerDEBUG(f'running on directory: {dirPath}')