def manage_local_service(args): daemon = Daemon() daemon.set_stdout(os.devnull).set_stderr(os.devnull) if args.role == 'collector': from detector.service import service_main daemon.set_pid_file( os.path.join(CURRENT_DIRNAME, './tmp/collector.pid')) daemon.set_function(service_main) elif args.role == 'monitor': from detector.metric_detector import detector_main daemon.set_pid_file(os.path.join(CURRENT_DIRNAME, './tmp/detector.pid')) daemon.set_function(detector_main) elif args.role == 'agent': from agent.metric_agent import agent_main pre_check = check_collector() and check_db_alive( port=config.get('agent', 'db_port')) if args.mode == 'start' and not pre_check: print('FATAL: Agent process failed to start.', file=sys.stderr, flush=True) return daemon.set_pid_file(os.path.join(CURRENT_DIRNAME, './tmp/agent.pid')) daemon.set_function(agent_main) else: print('FATAL: incorrect parameter.') print(usage()) return if args.mode == 'start': if args.role == 'collector': listen_port = config.get('server', 'listen_port') check_port_occupancy(listen_port) daemon.start() else: daemon.stop()
def foo(path): loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) d = Daemon(path) d.start()
def test_start(self): with self.assertRaises(SystemExit): daemon = Daemon(pid_path) daemon.start() sys.exit(0)