fix:修复相关问题,新增留言查看
This commit is contained in:
@@ -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"))
|
||||
|
||||
|
||||
# ==========================
|
||||
# 冲突强度评分 (1–10)
|
||||
# ==========================
|
||||
@@ -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)
|
||||
|
||||
|
||||
# ==========================
|
||||
|
||||
Reference in New Issue
Block a user