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