def run(): if os.getuid() == 0: gid = os.environ['GID'] uid = os.environ['UID'] os.setgid(int(gid)) os.setuid(int(uid)) executor = MyExecutor() driver = mesos.MesosExecutorDriver(executor) driver.run()
def main(args=None): from _version import __version__ if len(sys.argv) == 2 and sys.argv[1] == "--version": print(__version__) sys.exit(0) cio.print_out('Cook Executor version {}'.format(__version__), flush=True) environment = os.environ executor_id = environment.get('MESOS_EXECUTOR_ID', '1') log_level = environment.get('EXECUTOR_LOG_LEVEL', 'INFO') logging.basicConfig(level=log_level, filename='executor.log', format='%(asctime)s %(levelname)s %(message)s') logging.info('Starting Cook Executor {} for executor-id={}'.format( __version__, executor_id)) logging.info('Log level is {}'.format(log_level)) config = cc.initialize_config(environment) def print_memory_usage_task(): cu.print_memory_usage() timer = Timer(config.memory_usage_interval_secs, print_memory_usage_task) timer.daemon = True timer.start() print_memory_usage_task() stop_signal = Event() non_zero_exit_signal = Event() def handle_interrupt(interrupt_code, _): logging.info( 'Executor interrupted with code {}'.format(interrupt_code)) cio.print_and_log( 'Received kill for task {} with grace period of {}'.format( executor_id, config.shutdown_grace_period)) stop_signal.set() non_zero_exit_signal.set() cu.print_memory_usage() signal.signal(signal.SIGINT, handle_interrupt) signal.signal(signal.SIGTERM, handle_interrupt) try: executor = ce.CookExecutor(stop_signal, config) driver = pm.MesosExecutorDriver(executor) logging.info('MesosExecutorDriver is starting...') driver.start() executor.await_completion() logging.info('MesosExecutorDriver requested to stop') driver.stop() logging.info('MesosExecutorDriver has been stopped') executor.await_disconnect() except Exception: logging.exception('Error in __main__') stop_signal.set() non_zero_exit_signal.set() cu.print_memory_usage() exit_code = 1 if non_zero_exit_signal.isSet() else 0 logging.info('Executor exiting with code {}'.format(exit_code)) sys.exit(exit_code)
t.daemon = True t.start() self.ts[task.task_id.value] = t def killTask(self, driver, task_id): try: if task_id.value in self.ps: self.ps[task_id.value].kill() reply_status(driver, task_id, mesos_pb2.TASK_KILLED) except: pass def shutdown(self, driver): for p in self.ps.values(): try: p.kill() except: pass for t in self.ts.values(): t.join() if __name__ == "__main__": if os.getuid() == 0: gid = os.environ['GID'] uid = os.environ['UID'] os.setgid(int(gid)) os.setuid(int(uid)) executor = MyExecutor() mesos.MesosExecutorDriver(executor).run()
def run(): executor = MyExecutor() driver = mesos.MesosExecutorDriver(executor) driver.run()