Explorer
/tmp/p26_requeue.py
← Zurück ↓ Download
import sqlite3,json,datetime
DB='/opt/struktur/youtube-research/knowledge.db'
ids=[12,13,14,15,16]
con=sqlite3.connect(DB,timeout=30)
con.row_factory=sqlite3.Row
rows=list(con.execute('SELECT e.*,v.transcript_status FROM e2e_jobs e JOIN videos v ON v.youtube_id=e.youtube_id WHERE e.job_id IN (?,?,?,?,?) ORDER BY e.job_id',ids))
assert [r['job_id'] for r in rows]==ids
assert all(r['status']=='blocked_transcript_fetch' for r in rows)
allowed=['Rl-G5GKrql8','wmORMDVRXjg','mHj_MgTeJ-M','2x_-YgGMoZk','S7yg98I6L7k']
assert all(r['youtube_id'] in allowed for r in rows)
con.execute('BEGIN IMMEDIATE')
for job_id in ids:
    cur=con.execute("UPDATE e2e_jobs SET status='queued',step='queued',reserved_at=NULL,completed_at=NULL,lease_until=NULL,error_code=NULL,error_message=NULL,updated_at=? WHERE job_id=? AND status='blocked_transcript_fetch'",(datetime.datetime.now(datetime.timezone.utc).isoformat(),job_id))
    assert cur.rowcount==1
con.commit()
post=list(con.execute('SELECT job_id,youtube_id,status,attempts,updated_at FROM e2e_jobs WHERE job_id IN (?,?,?,?,?) ORDER BY job_id',ids))
assert all(r['status']=='queued' for r in post)
with open('/opt/struktur/youtube-research/reports/p26/requeue.json','w') as f:
    json.dump({'utc':datetime.datetime.now(datetime.timezone.utc).isoformat(),'before':[dict(r) for r in rows],'after':[dict(r) for r in post]},f,indent=2,default=str)
print('requeued_exact_jobs=5')
print([(r['job_id'],r['youtube_id'],r['attempts'],r['status']) for r in post])
con.close()