コード例 #1
0
 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())
コード例 #2
0
 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())
コード例 #3
0
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
コード例 #4
0
    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())
コード例 #5
0
    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())
コード例 #6
0
def main():
    train_tasks = TaskManager(THREAD_NUM)
    server_run(port=PORT)
コード例 #7
0
def update_progress(task_id, progress):
    TaskManager().task_dict[task_id]['progress'] = progress