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

Class Task

client/node/common/task.py:34–196  ·  view source on GitHub ↗

任务对象。每个任务都会创建一个Task类实例

Source from the content-addressed store, hash-verified

32
33
34class Task(object):
35 """任务对象。每个任务都会创建一个Task类实例"""
36 def __init__(self, task_id, task_name, request_file, response_file, log_file, env):
37 """
38 :param task_id(int): 任务id
39 :param task_name(str): 任务名,对应task包下的py名
40 :param request_file: 任务request文件路径
41 :param response_file: 任务response文件路径
42 :param log_file: 任务日志文件路径
43 :param env: 任务执行的环境变量
44 """
45 self.task_id = task_id
46 self.task_name = task_name
47 self.task_log = log_file
48 self.request_file = request_file
49 self.response_file = response_file
50 self.env = env
51
52 self._done = False
53
54 self.code = None
55 self.msg = None
56 self.data = None
57 self._task_proc = None
58 self._task_expired_time = None
59
60 def _read_tail_lines(self, filepath):
61 """读取文件末尾的1024字节
62 """
63 try:
64 with open(filepath, 'r') as fh:
65 fh.seek(0, os.SEEK_END)
66 size = fh.tell()
67 pos = 1024
68 if size>pos:
69 fh.seek(size-pos, os.SEEK_SET)
70 lines = fh.readlines()
71 return lines[1:]
72 else:
73 fh.seek(0, os.SEEK_SET)
74 return fh.readlines()
75 except Exception as err:
76 message = "read file(%s) tail lines error: %s" % (filepath, str(err))
77 logger.error(message)
78 return message
79
80 def terminate(self):
81 """kill the task"""
82 if settings.PLATFORMS[sys.platform] == "windows":
83 # 在windows平台上只调用terminate,只能关闭子进程,无法关闭孙子进程,需要通过递归遍历子进程来关闭
84 # 先关闭子进程,原因:子进程如果一直在启动孙进程,先关闭孙进程再关闭子进程,两步之间可能会有孙进程漏关
85 try:
86 task_proc = psutil.Process(self._task_proc.pid)
87 children = task_proc.children(recursive=True)
88 self._task_proc.terminate() # 关闭子进程
89 logger.info("kill children processes: %s" % children)
90 for child in children:
91 try:

Callers 4

runMethod · 0.90
runMethod · 0.90
runMethod · 0.90
prepare_tasksMethod · 0.90

Calls

no outgoing calls

Tested by 1

runMethod · 0.72