Prewarm terminal scan payload

This commit is contained in:
2569718930@qq.com
2026-06-01 00:14:12 +08:00
parent 22f4ac1f26
commit 7040598e26
2 changed files with 59 additions and 1 deletions
+26
View File
@@ -2298,6 +2298,32 @@ def test_scan_terminal_timeout_does_not_replace_better_cached_snapshot(monkeypat
assert [row["id"] for row in cached["rows"]] == ["old-1", "old-2"]
def test_scan_terminal_prewarm_builds_default_terminal_payload(monkeypatch):
calls = []
def _fake_build(filters, *, force_refresh=False):
calls.append((dict(filters), force_refresh))
return {"rows": []}
monkeypatch.setattr(
scan_terminal_service,
"_build_scan_terminal_payload_uncached",
_fake_build,
)
assert scan_terminal_service._warm_scan_terminal_payloads() == 1
filters, force_refresh = calls[0]
assert force_refresh is False
assert filters["scan_mode"] == "tradable"
assert filters["min_price"] == 0.05
assert filters["max_price"] == 0.95
assert filters["min_edge_pct"] == 2.0
assert filters["min_liquidity"] == 500.0
assert filters["market_type"] == "maxtemp"
assert filters["time_range"] == "today"
assert filters["limit"] == 180
def test_scan_terminal_service_returns_failed_without_success_snapshot(monkeypatch):
filters = {"scan_mode": "tradable", "limit": 5}
scan_terminal_cache._SCAN_TERMINAL_CACHE.clear()
+33 -1
View File
@@ -336,6 +336,36 @@ def build_scan_terminal_payload(
_SCAN_PREWARM_STARTED = False
_SCAN_PREWARM_LOCK = threading.Lock()
_SCAN_TERMINAL_PREWARM_RAW_FILTERS = [
{
"scan_mode": "tradable",
"min_price": 0.05,
"max_price": 0.95,
"min_edge_pct": 2,
"min_liquidity": 500,
"market_type": "maxtemp",
"time_range": "today",
"limit": 180,
}
]
def _scan_terminal_prewarm_filters() -> List[Dict[str, Any]]:
return [
_normalize_scan_terminal_filters(filters)
for filters in _SCAN_TERMINAL_PREWARM_RAW_FILTERS
]
def _warm_scan_terminal_payloads() -> int:
ok = 0
for filters in _scan_terminal_prewarm_filters():
try:
_build_scan_terminal_payload_uncached(filters, force_refresh=False)
ok += 1
except Exception as exc:
logger.warning("scan terminal payload pre-warm failed: {}", exc)
return ok
def start_scan_terminal_prewarm() -> None:
@@ -379,11 +409,13 @@ def start_scan_terminal_prewarm() -> None:
ok += 1
except Exception:
pass
payload_ok = _warm_scan_terminal_payloads()
elapsed = int(time.time() - started)
logger.info(
"scan terminal pre-warm finished ok={}/{} elapsed={}s",
"scan terminal pre-warm finished ok={}/{} payloads={} elapsed={}s",
ok,
len(city_names),
payload_ok,
elapsed,
)
except (ValueError, OSError, IOError):