def daemon_command(self, options): """ Fires events: * manager.daemon.started * manager.daemon.completed :param options: argparse options """ if options.action == 'start': if options.daemonize: self.daemonize() with self.acquire_lock(): try: signal.signal(signal.SIGTERM, self._handle_sigterm) except ValueError as e: # If flexget is being called from another script, e.g. windows service helper, and we are not the # main thread, this error will occur. log.debug('Error registering sigterm handler: %s' % e) self.ipc_server.start() fire_event('manager.daemon.started', self) self.scheduler.start() try: self.scheduler.wait() except KeyboardInterrupt: log.info('Got ctrl-c, shutting down.') fire_event('manager.daemon.completed', self) self.shutdown(finish_queue=False) elif options.action == 'status': ipc_info = self.check_ipc_info() if ipc_info: log.info('Daemon running. (PID: %s)' % ipc_info['pid']) else: log.info('No daemon appears to be running for this config.') elif options.action in ['stop', 'reload']: ipc_info = self.check_ipc_info() if ipc_info: try: client = IPCClient(ipc_info['port'], ipc_info['password']) except ValueError as e: log.error(e) else: if options.action == 'stop': client.shutdown() elif options.action == 'reload': client.reload() self.shutdown() else: log.error('There does not appear to be a daemon running.')
def daemon_command(self, options): """ Fires events: * manager.daemon.started * manager.daemon.completed :param options: argparse options """ if options.action == 'start': if options.daemonize: self.daemonize() with self.acquire_lock(): signal.signal(signal.SIGTERM, self._handle_sigterm) self.ipc_server.start() fire_event('manager.daemon.started', self) self.scheduler.start() try: self.scheduler.wait() except KeyboardInterrupt: log.info('Got ctrl-c, shutting down.') fire_event('manager.daemon.completed', self) self.shutdown(finish_queue=False) elif options.action == 'status': ipc_info = self.check_ipc_info() if ipc_info: log.info('Daemon running. (PID: %s)' % ipc_info['pid']) else: log.info('No daemon appears to be running for this config.') elif options.action in ['stop', 'reload']: ipc_info = self.check_ipc_info() if ipc_info: try: client = IPCClient(ipc_info['port'], ipc_info['password']) except ValueError as e: log.error(e) else: if options.action == 'stop': client.shutdown() elif options.action == 'reload': client.reload() self.shutdown() else: log.error('There does not appear to be a daemon running.')
def daemon_command(self, options): """ Fires events: * manager.daemon.started * manager.daemon.completed :param options: argparse options """ if options.action == 'start': if options.daemonize: self.daemonize() with self.acquire_lock(): signal.signal(signal.SIGTERM, self._handle_sigterm) self.ipc_server.start() fire_event('manager.daemon.started', self) self.scheduler.start() try: self.scheduler.wait() except KeyboardInterrupt: log.info('Got ctrl-c, shutting down.') fire_event('manager.daemon.completed', self) self.shutdown(finish_queue=False) elif options.action == 'stop': ipc_info = self.check_ipc_info() if ipc_info: client = IPCClient(ipc_info['port'], ipc_info['password']) client.shutdown() self.shutdown() else: log.error('There does not appear to be a daemon running.') elif options.action == 'status': ipc_info = self.check_ipc_info() if ipc_info: log.info('Daemon running. (PID: %s)' % ipc_info['pid']) else: log.info('No daemon appears to be running for this config.')