def run(): """Run main server loop""" # create signal handler def signal_handler(sig, frame): print '\nCaught signal {0}... Quitin\' Time!'.format(str(sig)) QuitinTime.set() signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) # create and start worker threads AcquireThread = Acquire(AcquireIn,MessageBox) StorageThread = Storage(StorageIn,MessageBox) SerialThread = Serial(SerialIn,MessageBox) AcquireThread.start() StorageThread.start() SerialThread.start() # pass messages until program is ended while True: # check to see if it's time to quit if QuitinTime.is_set(): break try: # use timeout so that main thread can catch signals msg = MessageBox.get(timeout=0.5) for owner in msg.to: QueueOwners[owner].put(msg.msg) except Queue.Empty: pass if Reboot.is_set(): os.system('reboot') if PowerOff.is_set(): os.system('poweroff')
def poweroff(self, val): QuitinTime.set() PowerOff.set()