feat: 自建 SearXNG 搜索超时可配置(SEARXNG_TIMEOUT_SECONDS) (#2249)

* feat: make self-hosted SearXNG search timeout configurable

SEARXNG_TIMEOUT_SECONDS (default 10s, min 1) now controls the per-search
timeout for self-hosted SearXNG instances, threaded through all three
SearchService construction sites. Public-instance timeout stays fixed.

* fix: thread SEARXNG_TIMEOUT_SECONDS through subprocess rebuild and Actions

- persist searxng_timeout_seconds in _constructor_kwargs so the bounded
  topic-news subprocess rebuild no longer silently falls back to 10s
- map SEARXNG_TIMEOUT_SECONDS (vars||secrets) in 00-daily-analysis.yml
- document the variable in full-guide/full-guide_EN data-source tables,
  add CHANGELOG entry, and add regression tests for both paths

* fix: document SearXNG timeout environment contract

* fix: register SearXNG timeout setting

* fix: keep SearXNG timeout env-only

---------

Co-authored-by: zhulinsen <42829555+ZhuLinsen@users.noreply.github.com>
Co-authored-by: zhulinsen <zhuls97@163.com>
This commit is contained in:
TimingAlmostMet
2026-08-30 21:31:26 +08:00
committed by GitHub
parent 2ab6f147f3
commit ac8bd29b0f
11 changed files with 69 additions and 2 deletions

View File

@@ -165,6 +165,7 @@ daily_stock_analysis/
| `MINIMAX_API_KEYS` | [MiniMax](https://platform.minimax.io/) Coding Plan Web Search结构化搜索结果 | 可选 |
| `SEARXNG_BASE_URLS` | SearXNG 自建实例(无配额兜底,需在 settings.yml 启用 format: json留空时仅在显式启用公共实例发现后使用 `searx.space` | 可选 |
| `SEARXNG_PUBLIC_INSTANCES_ENABLED` | 是否在 `SEARXNG_BASE_URLS` 为空时自动从 `searx.space` 获取公共实例(默认 `false`)。公共实例普遍限流或未开启 JSON 输出,开启后每次分析可能多耗 30~60 秒且新闻面为空 | 可选 |
| `SEARXNG_TIMEOUT_SECONDS` | 自建 SearXNG 单次搜索超时(秒,默认 `10`,最小 `1`);实例较慢(如聚合引擎较多的 NAS 部署时可调大公共实例超时不受影响。GitHub Actions 需显式映射该变量 | 可选 |
| `TUSHARE_TOKEN` | [Tushare Pro](https://tushare.pro/weborder/#/login?reg=834638 ) Token | 可选 |
| `TUSHARE_HTTP_URL` | Tushare Pro HTTP 接入地址;留空(或未设置/空白)时使用官方端点 `http://api.tushare.pro`,仅在需通过公司内网代理、跨境网络或自建镜像时填写 `http://``https://` 开头的完整地址 | 可选 |
| `TICKFLOW_API_KEY` | [TickFlow](https://tickflow.org) API Key可选用于 A 股日 K、实时行情、股票列表/名称与大盘复盘增强;失败或权限不足时自动回退。 | 可选 |
@@ -375,6 +376,7 @@ daily_stock_analysis/
| `SOCIAL_SENTIMENT_API_URL` | Stock Sentiment API 地址(默认 `https://api.adanos.org` | 可选 |
| `SEARXNG_BASE_URLS` | SearXNG 自建实例(无配额兜底,需在 settings.yml 启用 format: json留空时仅在显式启用公共实例发现后使用 `searx.space` | 可选 |
| `SEARXNG_PUBLIC_INSTANCES_ENABLED` | 是否在 `SEARXNG_BASE_URLS` 为空时自动从 `searx.space` 获取公共实例(默认 `false`)。公共实例普遍限流或未开启 JSON 输出,开启后每次分析可能多耗 30~60 秒且新闻面为空 | 可选 |
| `SEARXNG_TIMEOUT_SECONDS` | 自建 SearXNG 单次搜索超时(秒,默认 `10`,最小 `1`);实例较慢(如聚合引擎较多的 NAS 部署时可调大公共实例超时不受影响。GitHub Actions 需显式映射该变量 | 可选 |
| `NEWS_STRATEGY_PROFILE` | 新闻策略窗口档位:`ultra_short`(1天)/`short`(3天)/`medium`(7天)/`long`(30天);实际窗口取与 `NEWS_MAX_AGE_DAYS` 的最小值 | 默认 `short` |
| `NEWS_MAX_AGE_DAYS` | 新闻最大时效(天),搜索时限制结果在近期内 | 默认 `3` |
| `BIAS_THRESHOLD` | 乖离率阈值(%),超过提示不追高;强势趋势股自动放宽到 1.5 倍 | 默认 `5.0` |