jihuaqiang 2 veckor sedan
förälder
incheckning
370dcfc93f
2 ändrade filer med 75 tillägg och 17 borttagningar
  1. 65 0
      force_kill_processes.sh
  2. 10 17
      tools/indentify/image_identifier.py

+ 65 - 0
force_kill_processes.sh

@@ -0,0 +1,65 @@
+#!/bin/bash
+
+# 强制清理所有相关进程的脚本
+
+echo "🔍 查找所有相关进程..."
+
+# 查找所有相关进程
+PROCESSES=$(ps aux | grep -E "(python.*agent|knowledge-agent|gemini|image_identifier|video_identifier)" | grep -v grep | awk '{print $2}')
+
+if [ -z "$PROCESSES" ]; then
+    echo "✅ 没有找到相关进程"
+    exit 0
+fi
+
+echo "📋 找到以下进程:"
+ps aux | grep -E "(python.*agent|knowledge-agent|gemini|image_identifier|video_identifier)" | grep -v grep
+
+echo ""
+echo "🛑 开始强制终止进程..."
+
+# 首先尝试优雅终止
+for pid in $PROCESSES; do
+    echo "正在终止进程 $pid..."
+    kill -TERM $pid 2>/dev/null
+done
+
+# 等待3秒
+sleep 3
+
+# 检查是否还有进程存在
+REMAINING=$(ps aux | grep -E "(python.*agent|knowledge-agent|gemini|image_identifier|video_identifier)" | grep -v grep | awk '{print $2}')
+
+if [ ! -z "$REMAINING" ]; then
+    echo "⚠️  仍有进程未终止,使用强制终止..."
+    
+    # 强制终止
+    for pid in $REMAINING; do
+        echo "强制终止进程 $pid..."
+        kill -9 $pid 2>/dev/null
+    done
+    
+    # 再次等待
+    sleep 2
+    
+    # 最终检查
+    FINAL_CHECK=$(ps aux | grep -E "(python.*agent|knowledge-agent|gemini|image_identifier|video_identifier)" | grep -v grep | awk '{print $2}')
+    
+    if [ ! -z "$FINAL_CHECK" ]; then
+        echo "❌ 仍有进程无法终止:"
+        ps aux | grep -E "(python.*agent|knowledge-agent|gemini|image_identifier|video_identifier)" | grep -v grep
+        echo "请手动检查这些进程"
+    else
+        echo "✅ 所有进程已强制终止"
+    fi
+else
+    echo "✅ 所有进程已优雅终止"
+fi
+
+# 清理PID文件
+if [ -f "/tmp/knowledge-agent.pid" ]; then
+    echo "🗑️  清理PID文件..."
+    rm -f /tmp/knowledge-agent.pid
+fi
+
+echo "🏁 清理完成"

+ 10 - 17
tools/indentify/image_identifier.py

@@ -145,23 +145,16 @@ class ImageIdentifier:
                 except Exception as e:
                 except Exception as e:
                     return {"idx": idx, "url": url, "content": "", "success": False, "error": str(e)}
                     return {"idx": idx, "url": url, "content": "", "success": False, "error": str(e)}
 
 
-            # 并发最多5条
-            with ThreadPoolExecutor(max_workers=2) as executor:
-                future_to_index = {}
-                for idx, url in enumerate(image_urls):
-                    future = executor.submit(analyze_image_job, (idx, url))
-                    future_to_index[future] = idx
-
-                for future in as_completed(list(future_to_index.keys())):
-                    result = future.result()
-                    idx = result["idx"]
-                    results[idx] = {
-                        "url": result["url"],
-                        "content": result["content"],
-                        "success": result["success"]
-                    }
-                    if not result["success"]:
-                        results[idx]["error"] = result["error"]
+            # 顺序逐个处理,取消并发
+            for idx, url in enumerate(image_urls):
+                result = analyze_image_job((idx, url))
+                results[idx] = {
+                    "url": result["url"],
+                    "content": result["content"],
+                    "success": result["success"]
+                }
+                if not result["success"]:
+                    results[idx]["error"] = result["error"]
 
 
             return {"images_comprehension": results}
             return {"images_comprehension": results}