3.3 KiB
3.3 KiB
任务382不存在分析
问题现象
从截图看到任务382的请求,但API查询返回"任务不存在"。
可能的原因
1. 任务已被删除
- 任务可能在失败后被清理
- 数据库中可能有定期清理机制
2. 任务ID不匹配
- 截图中显示的可能是其他类型的任务ID
- generation_task表中可能没有ID为382的记录
3. 数据库连接问题
- API连接的数据库与实际不同
- 配置文件中的数据库URL可能不一致
4. 任务类型不匹配
- 任务382可能不是唱歌类型的任务
- API查询时可能有类型过滤
排查步骤
步骤1: 直接查询数据库
-- 检查任务382是否存在
SELECT * FROM generation_task WHERE id = 382;
-- 如果不存在,查看最近的任务
SELECT id, task_type, status, error_msg, created_at
FROM generation_task
ORDER BY id DESC
LIMIT 20;
-- 查看最近的失败任务
SELECT id, task_type, status, error_msg, created_at
FROM generation_task
WHERE status = 'failed'
ORDER BY id DESC
LIMIT 10;
步骤2: 检查应用日志
从截图中可以看到的日志信息:
15:30:25.730- 请求成功,返回20015:30:25.923- 请求成功,返回20015:30:26.026- 请求成功,返回20015:30:26.026- 视频生成成功15:30:30.196- 请求成功,返回20015:30:30.196- 视频生成失败15:30:30.213- 任务2次失败
看起来有多个任务在处理,任务382可能已经被处理完成或失败。
步骤3: 查看实际的任务ID
从日志中提取实际的任务ID:
# 在日志文件中搜索
grep "generation_task_id" lover/logs/*.log | tail -20
解决方案
方案1: 查询最新的失败任务
-- 查询最新的失败任务
SELECT
id,
user_id,
lover_id,
status,
error_msg,
JSON_EXTRACT(payload, '$.song_title') as song_title,
created_at
FROM generation_task
WHERE status = 'failed'
AND task_type = 'sing'
ORDER BY created_at DESC
LIMIT 5;
方案2: 重新生成视频
如果任务已被删除,可以:
- 重新选择歌曲
- 重新提交生成请求
- 确保用户有足够的视频生成次数
方案3: 检查日志文件
# 查看最近的错误日志
Get-Content lover\logs\app.log -Tail 100 | Select-String "failed|error|382"
建议
- 先执行SQL查询确认任务382是否真的存在
- 如果不存在,查看最近的失败任务
- 根据实际的错误信息进行针对性处理
- 如果是偶发问题,可以直接重新生成
常见失败原因
根据代码分析,唱歌视频生成可能失败的原因:
- 用户次数不足:
video_gen_remaining <= 0 - 恋人不存在: 恋人被删除或未创建
- 恋人无形象:
lover.image_url为空 - 歌曲不存在: 歌曲被下架或删除
- 性别不匹配: 歌曲性别与恋人性别不符
- 内容安全: EMO检测未通过或内容审核失败
- API调用失败: DashScope API错误
- 网络问题: 下载音频/图片失败
- FFmpeg错误: 视频处理失败
- OSS上传失败: 无法上传到对象存储
下一步
请执行以下命令查看实际情况:
# 连接数据库
mysql -u root -prootx77 fastadmin
# 执行查询
SELECT id, status, error_msg, created_at FROM generation_task ORDER BY id DESC LIMIT 10;