FAL 日志清理指南
从 Hugging Face Spaces 日志中提取 request_id 并删除输出文件的完整流程。
背景
由于你的 API key 没有 FAL Logs API 访问权限(需要 alpha 项目权限),我们使用变通方案:从 Hugging Face Spaces 应用日志中提取 request_id。
前置要求
从 Hugging Face Spaces 下载日志
- 访问: https://huggingface.co/spaces/wapadil/seedream4
- 点击 "Logs" 标签页
- 复制所有日志内容并保存为
app_logs.txt
获取 ADMIN scope 的 API key
- Delete IO API 需要 ADMIN 权限
- 如果你的当前 API key 没有 ADMIN 权限,需要在 FAL 网站创建新的 key
- 访问: https://fal.ai/dashboard/keys
流程
步骤 1: 增强日志记录(已完成)
已更新应用代码,确保所有 request_id 被明确记录:
# monitoring.py - 新增函数
log_request_id(request_id, action="generated", model=..., prompt=...)
# api/routes.py - 在生成成功后调用
log_request_id(result['request_id'], ...)
日志格式示例:
2025-09-30 12:34:56 - seedream - INFO - [REQUEST_ID] abc123-def456 | action=generated | model=fal-ai/bytedance/seedream/v4/edit | prompt=...
重要: 需要重新部署应用到 Hugging Face Spaces 才能开始记录新的 request_id。
步骤 2: 从日志提取 request_id
运行提取脚本:
python extract_request_ids.py app_logs.txt
脚本功能:
- 自动识别多种日志格式(结构化、通用、JSON)
- 提取所有 request_id
- 按模型分组统计
- 保存到
request_ids.txt和request_ids_context.json
输出示例:
✓ 从结构化日志提取: 245 个 request_id
✓ 从通用日志提取: 12 个 request_id
✓ 已保存 257 个 request_id 到 request_ids.txt
✓ 已保存详细上下文到 request_ids_context.json
按模型分组:
- fal-ai/bytedance/seedream/v4/edit: 230 个
- fal-ai/qwen-image-edit-plus: 27 个
步骤 3: 批量删除输出文件
运行删除脚本:
python delete_io_only.py request_ids.txt YOUR_ADMIN_API_KEY
或者交互式输入 API key:
python delete_io_only.py request_ids.txt
# 脚本会提示输入 API key
脚本功能:
- 显示前5个 request_id 预览
- 要求输入 'YES' 确认(防止误删)
- 批量删除,自动重试失败的请求
- 保存详细结果到
delete_results_YYYYMMDD_HHMMSS.json - 保存失败的 request_id 到
failed_request_ids_YYYYMMDD_HHMMSS.txt(用于重试)
输出示例:
[1/257] abc123-def456... ✓
[2/257] xyz789-uvw012... ✓
[3/257] ghi345-jkl678... ❌ HTTP 404: Not Found
--- 已完成 10/257,休息 0.5s ---
执行完成
==========================================
✓ 成功删除: 250 个 (97.3%)
❌ 删除失败: 7 个 (2.7%)
📊 总计: 257 个
步骤 4: 重试失败的删除(可选)
如果有失败的 request_id,可以重试:
python delete_io_only.py failed_request_ids_20250930_123456.txt YOUR_ADMIN_API_KEY
常见问题
Q1: 提取不到 request_id?
可能原因:
- 日志文件是旧版本应用生成的(没有增强的日志记录)
- 日志文件不完整
解决方案:
- 确保下载了完整的 Hugging Face Spaces 日志
- 如果日志太旧,需要等待新的请求生成(使用更新后的应用)
- 尝试使用
extract_request_ids.py的通用模式(自动尝试所有模式)
Q2: 删除时返回 403 Forbidden?
原因: API key 没有 ADMIN scope 或 alpha 项目权限
解决方案:
- 在 FAL 网站创建新的 API key,确保选择 ADMIN scope
- 联系 FAL 团队 (support@fal.ai) 申请 alpha 项目权限
Q3: 删除时返回 404 Not Found?
可能原因:
- request_id 对应的资源已经被删除
- request_id 格式错误或不存在
解决方案:
- 忽略这些错误(可能是已经被删除的旧请求)
- 检查
request_ids_context.json确认提取的 ID 是否正确
Q4: 如何只删除特定时间段或特定模型的请求?
解决方案:
- 查看
request_ids_context.json,包含每个 request_id 的详细信息 - 手动筛选需要删除的 request_id
- 创建新的 txt 文件,每行一个 request_id
- 运行
delete_io_only.py使用新文件
示例:
import json
# 加载上下文
with open('request_ids_context.json') as f:
contexts = json.load(f)
# 只保留 seedream/v4/edit 模型的
filtered = [c['request_id'] for c in contexts
if c.get('model') == 'fal-ai/bytedance/seedream/v4/edit']
# 保存
with open('request_ids_filtered.txt', 'w') as f:
f.write('\n'.join(filtered))
文件说明
| 文件 | 用途 |
|---|---|
extract_request_ids.py |
从日志提取 request_id |
delete_io_only.py |
批量删除输出文件 |
delete_logs.py |
原始脚本(需要 Logs API 权限,已不可用) |
monitoring.py |
增强的日志系统(应用代码) |
api/routes.py |
API 路由(应用代码,已添加 request_id 日志) |
生成的文件
| 文件 | 说明 |
|---|---|
request_ids.txt |
提取的 request_id 列表(每行一个) |
request_ids_context.json |
详细上下文(包含模型、提示词等) |
delete_results_*.json |
删除操作的完整结果 |
failed_request_ids_*.txt |
删除失败的 request_id(用于重试) |
数据隐私
- 所有脚本都在本地运行
- 不会上传日志内容到任何第三方
- 只与 FAL API 通信执行删除操作
下一步优化
- 自动化清理:设置定期任务(如每周)自动清理旧日志
- 精细控制:基于时间范围、模型类型、提示词关键字过滤
- 日志导出:从 Hugging Face Spaces 自动下载日志(需要 API token)