集中管理所有 ThreadPoolExecutor 的 worker 数,让运维通过环境变量调节而无需改代码。
| 文件 | 职责 |
|---|---|
stocklens/utils/concurrency.py |
get_pool_workers(name, default=None) |
按以下优先级返回 worker 数:
STOCKLENS_<NAME>_WORKERS环境变量(具名覆盖)STOCKLENS_DEFAULT_WORKERS环境变量(全局覆盖)- 调用时传入的
default参数 os.cpu_count() or 4
非法值(非数字、≤0、空串)会被忽略并降级到下一级。
| Pool 名 | 调用点 | 用途 |
|---|---|---|
PIPELINE |
orchestrator.py:108 |
批量分析的 enrichment + LLM 池 |
PREFETCH |
orchestrator.py:1300 |
共享数据预取(market env / macro / news) |
DATA_FETCH |
orchestrator.py:1338 |
数据预采集池 |
DC_IO |
data_collector.py:57 |
DataCollector 内部 IO 池 |
US_ENRICH |
us_data_enricher.py:125 |
美股/港股增强数据并行获取 |
US_MACRO |
us_macro.py:479 |
US 宏观指标并行抓取 |
AGENT_TOOLS |
agent/runner.py:511 |
Agent 工具并行执行(默认 5) |
SEARCH |
search_service.py:754,793 |
多维度情报搜索(默认 5) |
STOCK_INFO |
tickbridge/core/stock_info_mixin.py:174 |
股票名称批量预取 |
TASK_QUEUE |
task_queue.py:137 |
API 任务队列 |
TASK_SERVICE |
task_service.py:47 |
API 任务服务 |
# 全局降低到 4 个 worker(避免 LLM rate-limit)
export STOCKLENS_DEFAULT_WORKERS=4
# 只把搜索池调到 2,其他保持默认
export STOCKLENS_SEARCH_WORKERS=2
# 减少 Yahoo Finance 限流:限制数据采集并发
export STOCKLENS_DATA_FETCH_WORKERS=3- 每个调用点都是 lazy import:
from stocklens.utils.concurrency import get_pool_workers,避免启动时加载。 - API 服务有独立的
long_pool/io_pool(在api/app.pylifespan 中创建),通过API_LONG_POOL_WORKERS/API_IO_POOL_WORKERS控制。