abuse: полный пересчёт индекса только по явному вызову (env не тормозит scan)
Some checks failed
ci / test (3.10) (push) Has been cancelled
ci / test (3.11) (push) Has been cancelled
ci / test (3.12) (push) Has been cancelled

This commit is contained in:
Vlad Gothbreach
2026-10-27 01:21:01 +03:00
parent d0b2187319
commit 42a864419b
12 changed files with 1844 additions and 983 deletions

View File

@@ -167,14 +167,15 @@ def _connect():
return con
def rebuild(full=False, chunk=4000):
def rebuild(full=False, chunk=4000, auto=False):
"""Инкрементальный индекс абузов: classify по новым items, без полного перещёлкивания.
full=True (или OMNI_ABUSE_REBUILD=1) — пересчитать всю базу после правки правил.
auto=True (вызов из чтения) игнорирует env, иначе каждый scan делал бы полный проход.
Возвращает число записей, попавших в индекс на этом проходе.
"""
import os
if os.environ.get("OMNI_ABUSE_REBUILD") == "1":
if not auto and os.environ.get("OMNI_ABUSE_REBUILD") == "1":
full = True
con = _connect()
try:
@@ -207,7 +208,7 @@ def rebuild(full=False, chunk=4000):
def _rows(limit=400, tag=None, q=None, since_days=None):
"""Читает из индекса abuse_idx; индекс добивается свежими записями перед чтением."""
try:
rebuild()
rebuild(auto=True)
except Exception:
pass
sql = ("SELECT i.id, i.source, i.url, i.title, i.text, i.published, a.tags, i.score, a.score "