Explorer
/proc/2012/task/2095/root/tmp/aa048_preflight876.py
← Zurück ↓ Download
import sqlite3,json,urllib.request,datetime,subprocess,sys
p='/opt/struktur/youtube-research/knowledge.db'; c=sqlite3.connect('file:'+p+'?mode=ro',uri=True); c.row_factory=sqlite3.Row
r=dict(c.execute("select id,video_id,graphiti_status,next_attempt_at,graphiti_episode_id,import_identity,obsidian_path from graphiti_import_queue where id=876").fetchone()); c.close()
now=datetime.datetime.now(datetime.timezone.utc)
next_at=datetime.datetime.fromisoformat(r['next_attempt_at']) if r['next_attempt_at'] else None
inv=json.load(urllib.request.urlopen('http://127.0.0.1:8644/episodes/inventory',timeout=90)).get('episodes',[])
matches=[e for e in inv if r['import_identity'] and r['import_identity'] in (e.get('source_description') or '')]
status=json.load(urllib.request.urlopen('http://127.0.0.1:8644/maintenance/status',timeout=20))
health=json.load(urllib.request.urlopen('http://127.0.0.1:8644/health',timeout=20))
print(json.dumps({'utc':now.isoformat(),'queue':r,'retry_due':bool(next_at and next_at<=now),'episode_matches':len(matches),'maintenance':status,'health':{k:health.get(k) for k in ['ready','active_request_count','maintenance_mode','write_requests_allowed','provider_rate_limited']},'pass':r['graphiti_status']=='retry_wait' and next_at<=now and not matches and status['maintenance_mode']==False and status['write_requests_allowed']==True and health.get('active_request_count')==0},ensure_ascii=False))