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;
|
||
```
|