KeyHunter parser v10 + 18 scanners + tests (synthetic fixtures only, no keys/db/tokens)
This commit is contained in:
41
validator_loop.py
Normal file
41
validator_loop.py
Normal file
@@ -0,0 +1,41 @@
|
||||
"""Eternal validator loop: every 15 min, validate accumulated NEW keys.
|
||||
|
||||
Reuses validate_backlog.run() (importlib of eternal_v10, 40 threads).
|
||||
Skips round when NEW==0."""
|
||||
import importlib.util
|
||||
import sqlite3
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
PROJ = Path(__file__).resolve().parent
|
||||
DB = PROJ / "data" / "keys.db"
|
||||
INTERVAL = 900
|
||||
|
||||
import validate_backlog as vb
|
||||
|
||||
|
||||
def new_count():
|
||||
db = sqlite3.connect(str(DB), timeout=120)
|
||||
try:
|
||||
return db.execute("SELECT count(*) FROM keys WHERE status='NEW'").fetchone()[0]
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
def main():
|
||||
print(time.strftime("[%H:%M:%S]") + " eternal validator loop start (15 min)", flush=True)
|
||||
while True:
|
||||
try:
|
||||
n = new_count()
|
||||
if n == 0:
|
||||
print(time.strftime("[%H:%M:%S]") + " no NEW, skip", flush=True)
|
||||
else:
|
||||
print(time.strftime("[%H:%M:%S]") + f" validating {n} NEW", flush=True)
|
||||
vb.run()
|
||||
except Exception as e:
|
||||
print(time.strftime("[%H:%M:%S]") + f" ERR {e}", flush=True)
|
||||
time.sleep(INTERVAL)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user