# ComfyUI API队列查询教程

提交后保存 prompt_id，区分队列与历史，按真实 history 输出定位 filename/subfolder/type 并下载。

本地结构与素材核验，未执行 ComfyUI 前端导入或扩散/ESRGAN 推理。图像与原 JSON 来源见 provenance.json。所有工作流为 UI 格式 0.4，与 prompt-api.json 分开。权重不打包。

## 使用

1. python check.py
2. 查看 models.csv，按模型出处准备文件。
3. 用本地 ComfyUI 打开 workflow.json，重新选择 Loader 下拉和输入。
4. 自己完成真实小样，填写 acceptance.csv。

## 1. 先理解本地服务边界

素材包仅含读取你自己的 ComfyUI 服务的 queue_client.py 与 API 示例。默认 origin 为 127.0.0.1:8188，保持服务本机可达；不要把无认证服务直接开放到公网。

## 2. 保存提交响应标识

实际 POST /prompt 后立刻写下 prompt_id 与 node_errors；请求超时而响应未知时，先查本地队列和已有记录，不盲目重提。脚本默认不提交，只有明确 --submit 才会排队。

## 3. 查询当前队列

GET /queue 返回 running 与 pending 的任务集合，按 prompt_id 判断当前状态。队列里没有并不一定是成功，也可能失败、被移除或尚未确认提交，继续查 history。

## 4. 按 prompt_id 读取历史

GET /history/{prompt_id}，如果暂时为空继续有上限地等待；检测错误信息或完成状态。脚本设置轮询次数和间隔，不无限循环，也不把 HTTP 200 就视为生成完成。

## 5. 读取真实输出引用

遍历 history 中 outputs 下实际 images 项，保存 filename、subfolder 和 type，使用 /view 查询下载。不能硬编码 ComfyUI_00001_.png 作为本次结果。

## 6. 核对下载文件与记录

检查 HTTP 状态、非空内容及图片格式，把 prompt_id 和输出路径一起写记录。素材包 history-fixture.json 是标注的人工响应教材，离线测试只检验解析逻辑，不证明服务实际完成。

## 7. 测试空历史与缺文件分支

运行 python queue_client.py --self-test，读取三个真实 fixture 文件：完成、空历史、缺少 images。断言未完成分支不会误写成功结果；在线状态与下载需在你的服务另验。


queue_client.py 默认只查询；--submit 明确触发本地真实推理。batch_manifest.py 仅生成计划，未提交。故障日志、history 响应和空验收栏是教材，不是本站成功实测。

## 官方来源

- https://github.com/Comfy-Org/ComfyUI/blob/master/script_examples/basic_api_example.py
- https://github.com/Comfy-Org/ComfyUI
- https://github.com/Comfy-Org/ComfyUI/blob/master/server.py

## 实际客户端命令

先进入解压后的本页素材目录，按本地 ComfyUI 官方说明准备环境、模型与服务。已有任务时，把 YOUR_PROMPT_ID 换成保存的真实 ID；此命令仅查询既有任务并下载确认的输出，不新建任务：

```bash
python queue_client.py --origin http://127.0.0.1:8188 --prompt-id YOUR_PROMPT_ID
```

确认要创建一个新任务时，才选择下面这条命令。它读取本页 prompt-api.json，实际提交本地推理，保存 submission-response.json，并继续轮询与下载；不能在提交状态未知时盲目重试：

```bash
python queue_client.py --origin http://127.0.0.1:8188 --submit
```

真实图片保存到 actual-output/，原始 history 也会写入该目录。查询达到上限且未确认图片时会报超时；不能当作成功，也不要直接再次提交。

下面只检查本地人工标注的 fixture，既不访问服务，也不排队或生成图片：

```bash
python queue_client.py --self-test
```

self-test 通过不能证明真实模型、队列或下载成功。
