def do_POST(self): content_length = int(self.headers['Content-Length']) post_data = self.rfile.read(content_length) result = self._parse_post_date(post_data.decode()) TaskManager().add_job(result) self._set_headers() self.wfile.write(json.dumps(result).encode())
def do_GET(self): parsed_path = urlparse(self.path) parsed_path = parse_qs(parsed_path.query) task_id = parsed_path.get('taskId', ['no taskId in query'])[0] info = TaskManager().get_task_info(task_id) if len(info) == 0: info['error'] = 'cannot find task info' info['taskId'] = task_id self._set_headers() self.wfile.write(json.dumps(info).encode())
def start(debug=False): if os.path.exists(os.path.join(LOCAL_PATH, PID_FILE)): print("server already started. you need stop it first or use restart") return # create log dir if is not existed try: if not os.path.exists(os.path.join(LOCAL_PATH, LOG_DIR)): os.mkdir(os.path.join(LOCAL_PATH, LOG_DIR)) except EnvironmentError as e: print("[server start]error creating log dir in local path: %s" % e) return -1 # intialize server logger success_intialize, server_log_file, task_log_file = initialize_logger() if not success_intialize: print("[server initialize]error initializing server logger", file=sys.stdout) return print("[server initialize]initialize logger.................Success", file=sys.stdout) # initialize task threading pool(Singleton) _ = TaskManager(THREAD_NUM) print("[server initialize]initialize Task Manager...........Success", file=sys.stdout) # daemonize process is not supported on Windows print("[server start]start server...") if platform.system() == "Windows": # start running server, listening to PORT server_run(port=PORT) else: try: if not debug: with daemon.DaemonContext( pidfile=daemon.pidfile.PIDLockFile( os.path.join(LOCAL_PATH, PID_FILE)), files_preserve=[ server_log_file.stream, task_log_file.stream ], stdout=open( os.path.join(LOCAL_PATH, SERVER_OUTPUT_LOG), 'a+'), stderr=open(os.path.join(LOCAL_PATH, SERVER_ERR_LOG), 'a+')): server_run(port=PORT) else: # start running server, listening to PORT server_run(port=PORT) except Exception as e: print("[server start]error starting server: %s" % e, file=sys.stdout) return -1
def do_POST(self): """ process HTTP POST Request :return: """ server_logger = logging.getLogger('main_server') d = {'clientip': self.client_address[0]} server_logger.info("recv POST request", extra=d) content_length = int(self.headers['Content-Length']) post_data = self.rfile.read(content_length) result = self._parse_post_date(post_data.decode()) TaskManager().add_job(result) server_logger.info("initialize task id, added to tasks pool", extra=d) self._set_headers() self.wfile.write(json.dumps(result).encode())
def do_GET(self): """ process HTTP GET Request :return: """ server_logger = logging.getLogger('main_server') d = {'clientip': self.client_address[0]} server_logger.info("recv GET request", extra=d) # extract task id parsed_path = urlparse(self.path) parsed_path = parse_qs(parsed_path.query) task_id = parsed_path.get('taskId', ['no taskId in query'])[0] info = TaskManager().get_task_info(task_id) # invalid task id if len(info) == 0: info['error'] = 'cannot find task info' info['taskId'] = task_id self._set_headers() # return task info self.wfile.write(json.dumps(info).encode())
def main(): train_tasks = TaskManager(THREAD_NUM) server_run(port=PORT)
def update_progress(task_id, progress): TaskManager().task_dict[task_id]['progress'] = progress