上传结果 :param task: 任务实例 :return:
(self, task)
| 79 | LogPrinter.info('terminate task %d by server', task_id) |
| 80 | |
| 81 | def _send_result(self, task): |
| 82 | """ |
| 83 | 上传结果 |
| 84 | :param task: 任务实例 |
| 85 | :return: |
| 86 | """ |
| 87 | """send task result to server""" |
| 88 | if task.code is None: # 分析正常完成的情况 |
| 89 | with open(task.response_file, 'r') as fp: |
| 90 | task_response = json.load(fp) |
| 91 | code = task_response['status'] |
| 92 | data = task_response['result'] |
| 93 | msg = task_response['message'] |
| 94 | node_task_version = task_response['task_version'] |
| 95 | |
| 96 | else: # 分析异常退出情况 |
| 97 | code = task.code |
| 98 | data = task.data |
| 99 | msg = task.msg |
| 100 | node_task_version = IToolModel.version |
| 101 | |
| 102 | LogPrinter.info('uploading task(%s) result(code:%d) to server', task.task_name, code) |
| 103 | |
| 104 | # 上传分析结果 |
| 105 | with open(task.request_file) as rf: |
| 106 | task_request = json.load(rf) |
| 107 | job_id = task_request['job'] |
| 108 | task_dir = task_request["task_dir"] |
| 109 | execute_processes = task_request['execute_processes'] |
| 110 | project_id = task_request['task_params'].get('project_id') |
| 111 | |
| 112 | # 上报进度: 98% - 上传分析结果 |
| 113 | Reporter(task_request['task_params']).update_task_progress(InfoType.SendResult) |
| 114 | |
| 115 | try: |
| 116 | # 上传issues和log到文件服务器 |
| 117 | data_url, log_url = ResultUploader().upload_result_detail(project_id, task.task_id, task_dir, data, task.task_log) |
| 118 | except FileServerError as err: |
| 119 | code = err.code |
| 120 | msg = f"Fail to send result to file server! Error: {err.msg}" |
| 121 | data_url = "" |
| 122 | log_url = "" |
| 123 | LogPrinter.error(msg) |
| 124 | except Exception as err: # 捕获其他异常,避免影响后续上报结果给server(导致server任务卡住无法结束) |
| 125 | code = E_NODE_TASK |
| 126 | msg = f"Fail to send result to file server! Error: {str(err)}" |
| 127 | data_url = "" |
| 128 | log_url = "" |
| 129 | LogPrinter.error(msg) |
| 130 | |
| 131 | # 上报结果给server |
| 132 | self._server.send_task_result(task_request['task_params'], job_id, task.task_id, node_task_version, code, data_url, msg, log_url, execute_processes) |
| 133 | |
| 134 | # 2019-11-18 注释掉,这里加了没用,上传完结果server端task已经不在运行 |
| 135 | # util.exceptions.ResfulApiError: Error[218]: Error[400]: {"task":["指定Task已经不在运行中"]} |
| 136 | # # 上报进度: 100% - 任务完成 |
| 137 | # Reporter(task_params).update_task_progress(InfoType.TaskDone) |
| 138 | LogPrinter.info('result upload finished') |
no test coverage detected