fix dead lock

This commit is contained in:
jxxghp
2025-07-23 17:03:50 +08:00
parent d6d12c0335
commit 232fe4d15e
2 changed files with 9 additions and 11 deletions
-1
View File
@@ -217,7 +217,6 @@ def pause_workflow(workflow_id: int,
""" """
停用工作流 停用工作流
""" """
from app.db.workflow_oper import WorkflowOper
workflow = WorkflowOper(db).get(workflow_id) workflow = WorkflowOper(db).get(workflow_id)
if not workflow: if not workflow:
return schemas.Response(success=False, message="工作流不存在") return schemas.Response(success=False, message="工作流不存在")
+9 -10
View File
@@ -133,14 +133,13 @@ class WorkFlowManager(metaclass=Singleton):
else: else:
workflows = WorkflowOper().get_event_triggered_workflows() workflows = WorkflowOper().get_event_triggered_workflows()
try: try:
with self._lock: for workflow in workflows:
for workflow in workflows: # 确保先移除旧的事件监听器
# 确保先移除旧的事件监听器 self.remove_workflow_event(workflow_id=workflow.id, event_type_str=workflow.event_type)
self.remove_workflow_event(workflow_id=workflow.id, event_type_str=workflow.event_type) # 如果工作流是事件触发类型且未被禁用
# 如果工作流是事件触发类型且未被禁用 if workflow.trigger_type == "event" and workflow.state != 'P':
if workflow.trigger_type == "event" and workflow.state != 'P': # 注册事件触发器
# 注册事件触发器 self.register_workflow_event(workflow.id, workflow.event_type)
self.register_workflow_event(workflow.id, workflow.event_type)
except Exception as e: except Exception as e:
logger.error(f"加载事件触发工作流失败: {e}") logger.error(f"加载事件触发工作流失败: {e}")
@@ -154,9 +153,9 @@ class WorkFlowManager(metaclass=Singleton):
logger.error(f"无效的事件类型: {event_type_str}") logger.error(f"无效的事件类型: {event_type_str}")
return return
if event_type in EventType: if event_type in EventType:
# 确保先移除旧的事件监听器
self.remove_workflow_event(workflow_id, event_type.value)
with self._lock: with self._lock:
# 确保先移除旧的事件监听器
self.remove_workflow_event(workflow_id, event_type.value)
# 添加新的事件监听器 # 添加新的事件监听器
eventmanager.add_event_listener(event_type, self._handle_event) eventmanager.add_event_listener(event_type, self._handle_event)
# 记录工作流事件触发器 # 记录工作流事件触发器