Files
insar-management-system-v2/backend/clear_stuck_task.py
T

56 lines
1.8 KiB
Python

"""清除卡住的 AI_DIAGNOSIS 任务"""
import asyncio
from app.database import AsyncSessionLocal
from app.models import SystemTaskORM, SystemJobORM
from sqlalchemy.future import select
async def clear_stuck_task():
task_id = '82db228d-ba61-419b-920c-bbdad74f9f94'
async with AsyncSessionLocal() as db:
# 查找任务
result = await db.execute(
select(SystemTaskORM).where(SystemTaskORM.task_id == task_id)
)
task = result.scalar_one_or_none()
if not task:
print(f'❌ 任务 {task_id} 不存在')
return
print(f'📋 找到任务:')
print(f' - Task ID: {task.task_id}')
print(f' - Task Type: {task.task_type}')
print(f' - Status: {task.status}')
print(f' - Message: {task.message}')
print(f' - Created: {task.created_at}')
print(f' - Updated: {task.updated_at}')
# 更新任务状态为 FAILED
task.status = 'FAILED'
task.message = '手动清除:测试任务失败'
# 查找关联的 Job
job_result = await db.execute(
select(SystemJobORM).where(SystemJobORM.task_id == task_id)
)
jobs = job_result.scalars().all()
if jobs:
print(f'\n📦 找到 {len(jobs)} 个关联 Job:')
for job in jobs:
print(f' - Job ID: {job.job_id}')
print(f' - Job Type: {job.job_type}')
print(f' - Status: {job.status}')
# 更新 Job 状态
if job.status not in ['COMPLETED', 'FAILED']:
job.status = 'FAILED'
print(f' ✅ 已更新为 FAILED')
await db.commit()
print(f'\n✅ 任务已清除,状态更新为 FAILED')
if __name__ == '__main__':
asyncio.run(clear_stuck_task())