feat: 添加日志接口

pull/21/head
梁浩 1 month ago
parent 16f64ed3b8
commit 12d1f4eca0

@ -15,6 +15,10 @@ from app.database import (
from app.services.task_service import TaskService
from app.services.image_service import ImageService
import os
import glob
from config.algorithm_config import AlgorithmConfig
task_bp = Blueprint('task', __name__)
@ -65,6 +69,33 @@ def get_task_status(task_id, current_user_id):
return jsonify(status), 200
@task_bp.route('/<int:task_id>/logs', methods=['GET'])
@int_jwt_required
def get_task_logs(task_id, current_user_id):
"""获取任务日志"""
task = Task.query.get(task_id)
if not TaskService.ensure_task_owner(task, current_user_id):
return TaskService.json_error('任务不存在或无权限', 404)
log_dir = AlgorithmConfig.LOGS_DIR
# 匹配模式:*task_{task_id}_*.log
pattern = os.path.join(log_dir, f'*task_{task_id}_*.log')
log_files = glob.glob(pattern)
if not log_files:
return jsonify({'logs': '暂无日志'}), 200
# 如果有多个,取修改时间最新的一个
latest_log = max(log_files, key=os.path.getmtime)
try:
with open(latest_log, 'r', encoding='utf-8') as f:
content = f.read()
return jsonify({'logs': content}), 200
except Exception as e:
return TaskService.json_error(f'读取日志失败: {str(e)}', 500)
@task_bp.route('/<int:task_id>/cancel', methods=['POST'])
@int_jwt_required
def cancel_task(task_id, current_user_id):

Loading…
Cancel
Save