|
@ -61,9 +61,11 @@ class TaskObject: |
|
|
self.llmth_list = [None] * self.llm_max_nums # llm线程list |
|
|
self.llmth_list = [None] * self.llm_max_nums # llm线程list |
|
|
self.doing_llm_list = [""] * self.llm_max_nums |
|
|
self.doing_llm_list = [""] * self.llm_max_nums |
|
|
self.llm_node_queue = queue.Queue() #待提交LLM的节点队列 |
|
|
self.llm_node_queue = queue.Queue() #待提交LLM的节点队列 |
|
|
#自检线程-------- |
|
|
#自检线程----------- |
|
|
self.check_th = None #自检线程句柄 |
|
|
self.check_th = None #自检线程句柄 |
|
|
#-----四队列----- |
|
|
#单步执行控制------- |
|
|
|
|
|
self.one_step_num = 0 #单步执行任务次数,默认1 |
|
|
|
|
|
#-----四队列------- |
|
|
self.run_instr_lock = threading.Lock() # 线程锁 |
|
|
self.run_instr_lock = threading.Lock() # 线程锁 |
|
|
self.runing_instr = {} #执行中指令记录 |
|
|
self.runing_instr = {} #执行中指令记录 |
|
|
|
|
|
|
|
@ -264,18 +266,30 @@ class TaskObject: |
|
|
self.is_had_work = True |
|
|
self.is_had_work = True |
|
|
return bsuccess |
|
|
return bsuccess |
|
|
|
|
|
|
|
|
def no_work_to_do(self): #任务单步状态控制-- 非工作中 |
|
|
def no_work_to_do(self): #任务单步状态控制-- 非工作中--2025-5-7增加了轮次,需要全面验证执行逻辑的完整和正确性 |
|
|
# 待执行instr-node |
|
|
# 待执行instr-node |
|
|
instr_node_list = list(self.instr_node_queue.queue) # 待执行指令的node--线程不安全 |
|
|
instr_node_list = list(self.instr_node_queue.queue) # 待执行指令的node--线程不安全 |
|
|
llm_node_list = list(self.llm_node_queue.queue) # 待提交llm的node--线程不安全 |
|
|
llm_node_list = list(self.llm_node_queue.queue) # 待提交llm的node--线程不安全 |
|
|
if len(instr_node_list) == 0 and len(llm_node_list) == 0: #没有待办节点了 |
|
|
if len(instr_node_list) == 0 and len(llm_node_list) == 0: #没有待办节点了 |
|
|
|
|
|
#遍历在执行 |
|
|
for str_instr in self.doing_instr_list: |
|
|
for str_instr in self.doing_instr_list: |
|
|
if str_instr != "": |
|
|
if str_instr != "": |
|
|
return |
|
|
return |
|
|
for str_llm in self.doing_llm_list: |
|
|
for str_llm in self.doing_llm_list: |
|
|
if str_llm != "": |
|
|
if str_llm != "": |
|
|
return |
|
|
return |
|
|
|
|
|
|
|
|
# 没有在执行任务了 |
|
|
# 没有在执行任务了 |
|
|
|
|
|
self.one_step_num -= 1 |
|
|
|
|
|
if not self.one_step_num: # 执行轮次已结束 |
|
|
|
|
|
pass |
|
|
|
|
|
else:#发起新的一轮 |
|
|
|
|
|
bok = self.put_one_task() |
|
|
|
|
|
if not bok: |
|
|
|
|
|
self.one_step_num = 0 |
|
|
|
|
|
#结束轮次--推送前端 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#推送是否有工作任务的状态到前端, |
|
|
#推送是否有工作任务的状态到前端, |
|
|
with self.is_had_work_lock: |
|
|
with self.is_had_work_lock: |
|
|
if self.is_had_work: #如果已经是False那就不需要修改了 |
|
|
if self.is_had_work: #如果已经是False那就不需要修改了 |
|
@ -483,14 +497,20 @@ class TaskObject: |
|
|
return False,"当前的任务或节点状态不允许执行单步,请检查!" |
|
|
return False,"当前的任务或节点状态不允许执行单步,请检查!" |
|
|
|
|
|
|
|
|
#web端提交任务单步--任务单步 |
|
|
#web端提交任务单步--任务单步 |
|
|
async def put_one_task(self): |
|
|
async def put_one_task(self,step_num): |
|
|
if self.task_status == 1 and self.work_type == 0: |
|
|
if self.task_status == 1 and self.work_type == 0: |
|
|
bsuccess = self.had_work_to_do() |
|
|
bsuccess = self.had_work_to_do() |
|
|
if bsuccess: |
|
|
if bsuccess: |
|
|
nodes = self.attack_tree.traverse_bfs() |
|
|
nodes = self.attack_tree.traverse_bfs() |
|
|
|
|
|
b_putwork = False |
|
|
for node in nodes: |
|
|
for node in nodes: |
|
|
_,_ = await self.put_one_node(node) |
|
|
bput,_ = await self.put_one_node(node) |
|
|
|
|
|
if bput: |
|
|
|
|
|
b_putwork = True |
|
|
|
|
|
if b_putwork: |
|
|
return True,"已提交单步任务" |
|
|
return True,"已提交单步任务" |
|
|
|
|
|
else: |
|
|
|
|
|
return False,"该任务已经没有待提交任务" |
|
|
else: |
|
|
else: |
|
|
return False,"当前任务正在执行任务中,不需要提交单步任务!" |
|
|
return False,"当前任务正在执行任务中,不需要提交单步任务!" |
|
|
else: |
|
|
else: |
|
|