46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
"""Замер 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()
|