abuse: классификатор ловит панели/github/hn и мульти-теги, реальный total из индекса, кап API поднят до 3000
This commit is contained in:
45
tools/probe_api.py
Normal file
45
tools/probe_api.py
Normal file
@@ -0,0 +1,45 @@
|
||||
"""Замер API панели: код, время, ключи ответа. Без секретов, только метрики."""
|
||||
import json
|
||||
import time
|
||||
import urllib.parse
|
||||
import urllib.request
|
||||
|
||||
BASE = "http://127.0.0.1:8078"
|
||||
PATHS = [
|
||||
"/api/health",
|
||||
"/api/stats",
|
||||
"/api/timeline?days=30",
|
||||
"/api/items?limit=5",
|
||||
"/api/abuse?limit=3",
|
||||
"/api/tg/status",
|
||||
"/api/keys",
|
||||
"/api/watch",
|
||||
"/api/digest?days=1",
|
||||
"/api/suggest?q=cve",
|
||||
]
|
||||
|
||||
|
||||
def main():
|
||||
for p in PATHS:
|
||||
t0 = time.time()
|
||||
try:
|
||||
raw = urllib.request.urlopen(BASE + p, timeout=90).read().decode("utf-8", "ignore")
|
||||
d = json.loads(raw)
|
||||
keys = list(d.keys()) if isinstance(d, dict) else type(d).__name__
|
||||
extra = ""
|
||||
if isinstance(d, dict):
|
||||
if "items" in d and isinstance(d["items"], list):
|
||||
extra = " n=%d" % len(d["items"])
|
||||
if d["items"]:
|
||||
extra += " keys=%s" % ",".join(list(d["items"][0].keys())[:14])
|
||||
if "me" in d:
|
||||
extra = " " + json.dumps(d, ensure_ascii=False)[:200]
|
||||
if "md" in d:
|
||||
extra = " md=%d chars" % len(d["md"])
|
||||
print("%-34s %6.2fs %s%s" % (p, time.time() - t0, keys, extra))
|
||||
except Exception as e:
|
||||
print("%-34s %6.2fs ERR %s" % (p, time.time() - t0, e))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user