fix:修复相关问题,新增留言查看

This commit is contained in:
Daniel
2026-03-06 11:41:09 +08:00
parent cbac58af62
commit 97b04b6ccc
10 changed files with 252 additions and 12 deletions

View File

@@ -31,7 +31,7 @@ API_BASE = os.environ.get("API_BASE", "http://localhost:3001")
QUERY = os.environ.get("GDELT_QUERY", "United States Iran military")
MAX_RECORDS = int(os.environ.get("GDELT_MAX_RECORDS", "30"))
FETCH_INTERVAL_SEC = int(os.environ.get("FETCH_INTERVAL_SEC", "60"))
RSS_INTERVAL_SEC = int(os.environ.get("RSS_INTERVAL_SEC", "60")) # 每分钟抓取世界主流媒体
# RSS 抓取间隔:优先从 DB crawler_config 读取(修订面板可调),否则用环境变量或默认 60
# 时间范围1h=1小时 1d=1天 1week=1周不设则默认 3 个月(易返回旧文)
GDELT_TIMESPAN = os.environ.get("GDELT_TIMESPAN", "1d")
# 设为 1 则跳过 GDELT仅用 RSS 新闻作为事件脉络GDELT 国外可能无法访问)
@@ -48,6 +48,22 @@ if os.environ.get("CRAWLER_USE_PROXY") != "1":
EVENT_CACHE: List[dict] = []
def _get_rss_interval_sec() -> int:
"""从 DB crawler_config 读取 RSS 抓取间隔(秒),修订面板可调。无配置或异常时返回 60。"""
try:
if os.path.exists(DB_PATH):
conn = sqlite3.connect(DB_PATH, timeout=3)
row = conn.execute("SELECT rss_interval_sec FROM crawler_config WHERE id = 1").fetchone()
conn.close()
if row and row[0] is not None:
val = int(row[0])
if 30 <= val <= 86400:
return val
except Exception:
pass
return int(os.environ.get("RSS_INTERVAL_SEC", "60"))
# ==========================
# 冲突强度评分 (110)
# ==========================
@@ -386,7 +402,8 @@ async def _periodic_fetch() -> None:
break
except Exception as e:
print(f" [warn] 定时抓取: {e}")
await asyncio.sleep(min(RSS_INTERVAL_SEC, FETCH_INTERVAL_SEC))
interval = min(_get_rss_interval_sec(), FETCH_INTERVAL_SEC)
await asyncio.sleep(interval)
# ==========================