MCPcopy Index your code
hub / github.com/Tencent/CodeAnalysis / ConcurrentTasksRuner

Class ConcurrentTasksRuner

client/node/localtask/runtask.py:202–313  ·  view source on GitHub ↗

多个任务并发执行类

Source from the content-addressed store, hash-verified

200
201
202class ConcurrentTasksRuner(TaskRunner):
203 """
204 多个任务并发执行类
205 """
206 def __init__(self, execute_request_list, env, job_web_url, proj_id):
207 """
208
209 :param execute_request_list: 任务执行参数列表
210 :param env: task执行的环境变量
211 :param job_web_url:
212 """
213 TaskRunner.__init__(self)
214 self._execute_request_list = execute_request_list
215 self._env = env
216 self._job_web_url = job_web_url
217 self._proj_id = proj_id
218 self._task_limit = psutil.cpu_count()
219 self._no_build_task_requests = []
220 self._build_task_requests = []
221 self._build_task_names = []
222 self._running_build_task = []
223 self._finished_task_results = []
224 self._err_code = 0
225 self._err_msg = ""
226
227 def _handle_exist_task(self):
228 """管理当前在执行的任务,如果任务结束,上传分析结果,并从self._running_task列表中删除
229 :return: True - 任务成功; False - 有任务失败
230 """
231 task_succ = True
232 for task in self._running_task[:]:
233 if task.done:
234 LogPrinter.info(f'Task_{task.task_id} is done.')
235 # 从任务队列中删除
236 self._running_task.remove(task)
237 if task.task_name in self._build_task_names:
238 self._running_build_task.remove(task)
239
240 # 上传到文件服务器
241 self._err_code, self._err_msg, log_url, data_url, execute_processes, node_task_version = ResultCheck.upload_task_result(task, self._proj_id)
242 # 判断任务是否失败
243 self._err_code, self._err_msg, task_succ, task_result = ResultCheck.get_task_result(task, self._job_web_url, log_url, data_url)
244 self._finished_task_results.append(task_result)
245 if not task_succ:
246 break
247
248 # 如果任务失败,把其他正在执行的任务都停止
249 if not task_succ:
250 for task in self._running_task:
251 try:
252 task.terminate()
253 except Exception as err:
254 LogPrinter.warning(f"{str(err)}")
255
256 return task_succ
257
258 def _filter_build_tasks(self):
259 # 区分编译和非编译类工具任务

Callers 2

_scan_projectMethod · 0.90
scan_projectMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected