Skip to content

Latest commit

 

History

History
58 lines (41 loc) · 2.15 KB

File metadata and controls

58 lines (41 loc) · 2.15 KB

stocklens/utils/concurrency.py — 集中并发池配置

职责

集中管理所有 ThreadPoolExecutor 的 worker 数,让运维通过环境变量调节而无需改代码。

文件清单

文件 职责
stocklens/utils/concurrency.py get_pool_workers(name, default=None)

API

get_pool_workers(name: str, *, default: Optional[int] = None) -> int

按以下优先级返回 worker 数:

  1. STOCKLENS_<NAME>_WORKERS 环境变量(具名覆盖)
  2. STOCKLENS_DEFAULT_WORKERS 环境变量(全局覆盖)
  3. 调用时传入的 default 参数
  4. 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.py lifespan 中创建),通过 API_LONG_POOL_WORKERS / API_IO_POOL_WORKERS 控制。