def main(mycfg): logging.info("# start system") init = Init(mycfg=mycfg) init.check() init.close() logging.info("# finish initialize") """ Class """ obj = EmptyObject() obj.neko = EtherInterface(mycfg=mycfg) obj.tip = TipnemControl(mycfg=mycfg) obj.income = IncomingPolling(mycfg=mycfg) obj.rest = RestApi(mycfg=mycfg) """ import object """ obj.neko.obj = obj obj.tip.obj = obj obj.income.obj = obj obj.rest.obj = obj """ threading start """ obj.income.start() obj.rest.start() obj.tip.start_control() # blocking main thread """ check """ count = 0 while True: try: count += 1 time.sleep(1) if mycfg.stop_signal: raise Exception("kill signal") if count % 1800 == 0: logging.info("# checking living %d" % count) except Exception as e: logging.info("# input stop signal") while True: mycfg.stop_signal = True time.sleep(1) for name in mycfg.stop_need_obj: if name not in mycfg.stop_ok: logging.info("# wait for %s" % name) break else: logging.info("# exit ok!") exit(0)