def parse(): while True: if abort: return try: msg = pull.recv_json() logger.d('pull received message = {}'.format(msg)) func = msg.get('func') if func == 'play': q.put({'cmd': s.play, 'args': msg.get('data')}) elif func == 'stop': q.put({'cmd': s.stop, 'args': msg.get('data')}) elif func == 'volume': q.put({'cmd': s.volume, 'args': msg.get('data')}) elif func == 'pause': q.put({'cmd': s.pause, 'args': msg.get('data')}) elif func == 'resume': q.put({'cmd': s.resume, 'args': msg.get('data')}) else: logger.w('not found function.') except KeyboardInterrupt: raise except Exception: logger.e('Unexpected error: {}'.format(str(sys.exc_info()[0]))) logger.e(traceback.format_exc())
def run_pull(): logger.d('connecting tcp://localhost:{}'.format(pull_port)) pull.bind('tcp://*:{}'.format(pull_port)) pool = Pool(1) pool.apply_async(parse) s.run() # block logger.d('block out pool.') pool.close() pool.terminate() pool.join() pull.close()
def run(self): self.run_async() try: while True: if self.aborted: break time.sleep(0.5) except KeyboardInterrupt: logger.d('keyboard Ctrl+C in simple_run_loop.run()') self.on_keyboard_interrupt() raise except Exception: logger.e('Unexpected error: {}'.format(str(sys.exc_info()[0]))) logger.e(traceback.format_exc()) raise finally: self.aborted = True logger.i('finish run')
def __message_loop(self): try: logger.d('start runloop') self.on_start_runloop() while True: try: if self.aborted: return self.on_do_function() except Exception as exception: ret = self.on_exception_at_runloop(exception) if (ret == SimpleRunLoop.CONTINUE): logger.d('continue runloop') continue else: logger.e('Unexpected error: {}'.format( str(sys.exc_info()[0]))) logger.e(traceback.format_exc()) logger.e('exit runloop by exception') return finally: self.run_loop_finished = True self.on_finish_runloop() logger.d('finished runloop')
def on_finish_runloop(self): self.all_stop() logger.d('finish runloop')
def on_start_runloop(self): logger.d('start runloop') pass