> ## Documentation Index
> Fetch the complete documentation index at: https://www.krea.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 任务生命周期

> 了解 Krea 任务从创建到完成的每个状态，包括轮询模式、重试和实用的错误处理策略。

## 概述

所有生成请求都遵循相同的基本生命周期：

<img className="w-full mx-auto dark:hidden" src="https://mintcdn.com/krea/ZLw3hmlHm50-cthl/images/job-status.svg?fit=max&auto=format&n=ZLw3hmlHm50-cthl&q=85&s=6cbb1b15fcde8ed4c7d7d84c2637d5c6" alt="Job lifecycle diagram" width="569" height="239" data-path="images/job-status.svg" />

<img className="w-full mx-auto dark:block hidden" src="https://mintcdn.com/krea/ZLw3hmlHm50-cthl/images/job-status-dark.svg?fit=max&auto=format&n=ZLw3hmlHm50-cthl&q=85&s=cc4c42010e1f9fb4688263f83705e37d" alt="Job lifecycle diagram" width="569" height="239" data-path="images/job-status-dark.svg" />

### 任务状态

<span className="text-sm font-bold text-blue-900 dark:text-blue-100 font-mono bg-blue-100 dark:bg-blue-900/30 border border-blue-300 dark:border-blue-600 px-1.5 py-0.5 rounded mr-1">queued</span> 任务在队列中等待处理

<span className="text-sm font-bold text-blue-900 dark:text-blue-100 font-mono bg-blue-100 dark:bg-blue-900/30 border border-blue-300 dark:border-blue-600 px-1.5 py-0.5 rounded mr-1">backlogged</span> 任务因当前并发上限而在等待

<span className="text-sm font-bold text-blue-900 dark:text-blue-100 font-mono bg-blue-100 dark:bg-blue-900/30 border border-blue-300 dark:border-blue-600 px-1.5 py-0.5 rounded mr-1">scheduled</span> 任务已被接受并计划处理

<span className="text-sm font-bold text-amber-900 dark:text-amber-100 font-mono bg-amber-100 dark:bg-amber-900/30 border border-amber-300 dark:border-amber-600 px-1.5 py-0.5 rounded mr-1">processing</span> 任务正在由 worker 处理中

<span className="text-sm font-bold text-amber-900 dark:text-amber-100 font-mono bg-amber-100 dark:bg-amber-900/30 border border-amber-300 dark:border-amber-600 px-1.5 py-0.5 rounded mr-1">sampling</span> 任务正在生成输出样本

<span className="text-sm font-bold text-amber-900 dark:text-amber-100 font-mono bg-amber-100 dark:bg-amber-900/30 border border-amber-300 dark:border-amber-600 px-1.5 py-0.5 rounded mr-1">intermediate-complete</span> 任务已有中间结果，可能仍在继续处理

<span className="text-sm font-bold text-green-900 dark:text-green-100 font-mono bg-green-100 dark:bg-green-900/30 border border-green-300 dark:border-green-600 px-1.5 py-0.5 rounded mr-1">completed</span> 任务成功完成，结果位于 `result.urls`

<span className="text-sm font-bold text-red-900 dark:text-red-100 font-mono bg-red-100 dark:bg-red-900/30 border border-red-300 dark:border-red-600 px-1.5 py-0.5 rounded mr-1">failed</span> 任务因错误失败，详情位于 `result.error`

<span className="text-sm font-bold text-gray-900 dark:text-gray-100 font-mono bg-gray-100 dark:bg-gray-900/30 border border-gray-300 dark:border-gray-600 px-1.5 py-0.5 rounded mr-1">cancelled</span> 任务已被用户或系统取消

### 失败与取消

**任务可能因以下原因失败：**

* 生成服务的 API 错误
* 无效参数或不支持的配置
* 内容审核（NSFW 过滤）
* 自动超时检测（托管工具为 3 分钟，外部提供方为 2 小时）

**取消任务：** 向 `/jobs/{id}` 发送 `DELETE` 请求。注意：任务只能在状态为 <span className="text-sm font-bold text-blue-900 dark:text-blue-100 font-mono bg-blue-100 dark:bg-blue-900/30 border border-blue-300 dark:border-blue-600 px-1.5 py-0.5 rounded mr-1">queued</span> 或 <span className="text-sm font-bold text-amber-900 dark:text-amber-100 font-mono bg-amber-100 dark:bg-amber-900/30 border border-amber-300 dark:border-amber-600 px-1.5 py-0.5 rounded mr-1">processing</span> 时才可以取消。

<Check>
  **重要：** 失败和取消的任务不会计费。你只需为已完成的任务付费。
</Check>

### 检查任务状态

通过向 `/jobs/{id}` 发送 `GET` 请求来轮询任务状态。推荐做法：

* 任务处于 pending 状态（`backlogged`、`queued`、`scheduled`、`processing`、`sampling` 或 `intermediate-complete`）时，每 2–5 秒轮询一次
* 对长时间运行的任务使用指数退避
* 当状态变为 <span className="text-sm font-bold text-green-900 dark:text-green-100 font-mono bg-green-100 dark:bg-green-900/30 border border-green-300 dark:border-green-600 px-1.5 py-0.5 rounded mr-1">completed</span>、<span className="text-sm font-bold text-red-900 dark:text-red-100 font-mono bg-red-100 dark:bg-red-900/30 border border-red-300 dark:border-red-600 px-1.5 py-0.5 rounded mr-1">failed</span> 或 <span className="text-sm font-bold text-gray-900 dark:text-gray-100 font-mono bg-gray-100 dark:bg-gray-900/30 border border-gray-300 dark:border-gray-600 px-1.5 py-0.5 rounded mr-1">cancelled</span> 时停止轮询
* 部分任务在 <span className="text-sm font-bold text-amber-900 dark:text-amber-100 font-mono bg-amber-100 dark:bg-amber-900/30 border border-amber-300 dark:border-amber-600 px-1.5 py-0.5 rounded mr-1">processing</span> 期间可能会在响应中包含预览图

**轮询实现示例：**

<CodeGroup>
  ```javascript Node.js theme={null}
  // npm install @krea-ai/sdk
  import { Krea } from "@krea-ai/sdk";

  const krea = new Krea({ apiKey: process.env.KREA_API_KEY });

  async function waitForJob(jobId) {
    const job = await krea.jobs.wait(jobId, { intervalMs: 2000 });
    return job.result;
  }
  ```

  ```python Python theme={null}
  import time

  def wait_for_job(job_id):
      while True:
          response = requests.get(
              f"{API_BASE}/jobs/{job_id}",
              headers={"Authorization": f"Bearer {API_TOKEN}"}
          )
          job = response.json()

          if job["status"] == "completed":
              return job["result"]
          if job["status"] in ("failed", "cancelled"):
              raise Exception(f"Job {job['status']}: {job.get('result', {}).get('error')}")

          print(f"Status: {job['status']}")
          time.sleep(2)
  ```
</CodeGroup>

## 下一步

<CardGroup cols={2}>
  <Card title="Webhooks" icon="bell" href="/developers/webhooks">
    在任务完成时收到通知
  </Card>

  <Card title="速率限制" icon="gauge" href="/developers/rate-limits">
    了解各套餐层级的 API 限制
  </Card>

  <Card title="Model APIs" icon="book-open" href="/api-reference/image/flux">
    探索所有可用端点及参数
  </Card>

  <Card title="API Keys & Billing" icon="key" href="/developers/api-keys-and-billing">
    创建和管理你的 API 密钥
  </Card>
</CardGroup>
