fix(kb-deep-analyzer): 子线程环境变量传递

- 在 _analyze_chunks_concurrent 中使用 _worker_env 保存环境变量
- 添加 init_worker() 初始化函数
- ThreadPoolExecutor 使用 initializer=init_worker 传递环境变量
This commit is contained in:
2026-02-13 15:54:42 +08:00
parent 99164f7ce6
commit 2d7d444803
+13 -1
View File
@@ -702,6 +702,18 @@ class DeepAnalyzer:
"""
import concurrent.futures
# 确保环境变量在子线程中可用
_worker_env = {
'AI_API_KEY': os.environ.get('AI_API_KEY', ''),
'AI_PROVIDER': os.environ.get('AI_PROVIDER', ''),
'AI_MODEL': os.environ.get('AI_MODEL', ''),
'AI_BASE_URL': os.environ.get('AI_BASE_URL', ''),
}
def init_worker():
"""初始化 worker 线程的环境变量"""
os.environ.update(_worker_env)
result = AnalysisResult()
CHUNK_MAX_CHARS = 3000
total_chars = len(text)
@@ -778,7 +790,7 @@ class DeepAnalyzer:
batch_tasks = [(i, batch_chunks[j], batch_times[j][0], batch_times[j][1])
for j, i in enumerate(range(batch_idx, batch_end))]
with concurrent.futures.ThreadPoolExecutor(max_workers=batch_size) as executor:
with concurrent.futures.ThreadPoolExecutor(max_workers=batch_size, initializer=init_worker) as executor:
futures = {executor.submit(self._analyze_chunk, task[1], task[0] + 1, metadata): task[0]
for task in batch_tasks}