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

# 同步与异步请求

> 同步和异步请求在 Bright Data Scraper API、Web Unlocker API 和 SERP API 中有何不同、何时使用哪种，以及任务的计费、返回和保留方式。

本页解释每个 Bright Data API 都要求您做出的一个选择：在同一个 HTTP 响应中等待结果，还是提交任务稍后再取结果。内容涵盖 Scraper API、Web Unlocker API 和 SERP API 各自如何实现这两种模式、何时选择哪种，以及各自的取舍。

## 什么是同步和异步请求

**同步**请求会保持连接直到结果到达，通常只需几秒。一个请求对应一个响应，无需跟踪其他内容。

**异步**请求会立即返回一个 ID，工作在后台继续。您稍后通过轮询取回结果，或让 Bright Data 推送到 webhook 或存储。没有任何操作在等待打开的连接，因此您可以在一分钟内提交数千个任务，待其就绪后再处理。

## 各 API 如何实现这两种模式

| API                  | 同步                                                                      | 异步                                                                                                                                          | 结果保留  |
| :------------------- | :---------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | :---- |
| **Scraper API**      | `POST /datasets/v3/scrape`，适合少量 URL；超过 1 分钟时返回 HTTP 202 和 `snapshot_id` | `POST /datasets/v3/trigger` 返回 `snapshot_id`；可轮询，或投递到 webhook 或存储。详见[如何使用异步请求批量抓取数据](/cn/products/scrapers/scrapers-library/async-requests) | 30 天  |
| **Web Unlocker API** | 默认请求方式                                                                  | 异步区域会立即返回 `x-response-id` 标头；通过轮询或 `webhook_url` 取回。详见[发送第一个异步请求](/cn/products/web-unlocker/send-your-first-request)                        | 48 小时 |
| **SERP API**         | 默认请求方式                                                                  | 与 Web Unlocker API 相同的异步区域机制。详见[异步请求](/cn/products/serp-api/asynchronous-requests)                                                          | 48 小时 |

## 何时使用哪种模式

**在以下情况使用同步请求：**

* 您在服务正在等待的实时用户，例如"立即查看该商品"按钮或屏幕上的搜索结果。
* 您需要在几秒内获得少量输入的结果。在 Scraper API 中，这意味着少量 URL。
* 您在做原型，希望集成尽可能简单。

**在以下情况使用异步请求：**

* 您运行定时任务：每晚的竞品监控、每周的排名跟踪。
* 您的抓取量较大，每小时数百次请求以上，或 URL 数量超过一次同步调用所能容纳的。
* 您在 Scraper API 上运行发现任务：按关键词搜索、按公司查找帖子。
* 您希望结果投递到 webhook、S3、Snowflake 或其他存储。
* 您在构建数据管道，几分钟内的新鲜度即可接受，并希望减少重试。

<Warning>
  不要在有人正在等待的功能中使用异步。异步延迟至少为几分钟，在 Web Unlocker API 和 SERP API 上高峰期最长可达 8 小时。
</Warning>

一个电商团队用异步在夜间抓取 50,000 条竞品价格供早间报告使用，而购物者点击查看单个商品的按钮则使用同步。

## Scraper API 的流程

同步：

```text theme={null}
Your app --> POST /scrape --> [Wait up to 1 min] --> Scraped data in response
```

整个操作是一个 HTTP 请求。如果抓取超过 1 分钟，API 返回 HTTP 202 和 `snapshot_id`，并以异步方式完成任务；数据仍会被采集，您像取回异步任务那样取回即可。调用 `/scrape` 的代码必须根据状态码分支处理。分支和轮询循环见[如何处理 202 响应](/cn/api-reference/scrapers/synchronous-requests)。

异步：

```text theme={null}
Your app --> POST /trigger --> snapshot_id (immediate)
                                    |
                     +--------------+--------------+
                     |              |              |
                  Poll API      Webhook      S3/Storage
                     |              |              |
                  GET /snapshot  POST to URL   File in bucket
```

取回结果有三种方式：轮询 `GET /datasets/v3/progress/{snapshot_id}` 并通过 `GET /datasets/v3/snapshot/{snapshot_id}` 下载；在触发请求中传入 `endpoint`，由 Bright Data 将记录 POST 到您的 URL；或设置存储目标，让文件落入您的存储桶。投递目标见[如何投递结果](/cn/products/scrapers/scrapers-library/data-delivery)。

## Web Unlocker API 和 SERP API 的流程

<img src="https://mintcdn.com/brightdata/8FBihMtdCDBVIPQS/images/scraping-automation/concepts/understanding-async-requests/async-flow-diagram.png?fit=max&auto=format&n=8FBihMtdCDBVIPQS&q=85&s=4576d59a7a90fd5097d9f0154315bf86" alt="异步请求立即返回 x-response-id；结果稍后通过轮询取回或由 webhook 投递" width="5075" height="5265" data-path="images/scraping-automation/concepts/understanding-async-requests/async-flow-diagram.png" />

请求立即返回 `x-response-id` 标头。计费发生在提交时，取回结果不计费，结果保留 48 小时。在任务完成前轮询会返回 `202`。按请求或在区域设置中配置 `webhook_url`，结果就绪时 Bright Data 会从 IP `100.27.150.189` 和 `18.214.10.85` POST 一条通知；请将这两个 IP 加入白名单，否则防火墙可能拦截。一个区域要么是同步要么是异步，两者都需要时请各保留一个区域。

<Warning>
  在 SERP API 上每次轮询都会计量。请使用 webhook，或每分钟最多轮询一次。
</Warning>

## 有哪些取舍

|          | 同步         | 异步               |
| :------- | :--------- | :--------------- |
| **延迟**   | 数秒         | 数分钟到数小时          |
| **连接处理** | 每个请求占用一个连接 | 无需保持连接           |
| **实现方式** | 一次请求，一次响应  | 需要 webhook 或轮询逻辑 |
| **吞吐量**  | 受打开连接数限制   | 每分钟数千个任务         |
| **成本**   | 按成功记录或请求计费 | 相同；取回结果免费        |

## 常见误解

### 异步总是比同步快

对于少量输入，同步更快：抓取开始前没有排队步骤。小型实时查询请使用同步。

### 同步请求耗时过长会失败

不会失败。在 Scraper API 上，超过 1 分钟的同步请求返回 HTTP 202 和 `snapshot_id`，任务继续；在 Web Unlocker API 和 SERP API 上，同步请求会保持连接直到结果到达。

## 常见问题

### 可以在同一应用中混合使用同步和异步吗？

可以。大多数应用对面向用户的查询使用同步，对批量任务使用异步。在 Web Unlocker API 和 SERP API 上，这意味着一个同步区域加一个异步区域。

### 同步和异步之间有成本差异吗？

没有。无论哪种模式，Scraper API 按成功记录计费，Web Unlocker API 和 SERP API 按请求计费。取回异步结果免费。

### 结果就绪时我的 webhook 宕机了怎么办？

当您的端点返回非 200 状态或超时时，Scraper API 会重试 webhook 投递。若需可靠投递，请改用存储目标。

### 丢失了响应 ID 或快照 ID 怎么办？

Web Unlocker API 或 SERP API 的响应 ID 无法找回，因此提交时请将其与请求元数据一起保存。Scraper API 的快照 ID 可通过[获取快照](/cn/api-reference/scrapers/management-apis/get-snapshots)在 30 天内列出。

## 后续步骤

<CardGroup cols={2}>
  <Card title="使用异步请求批量抓取" icon="layer-group" href="/cn/products/scrapers/scrapers-library/async-requests">
    触发、监控和下载 Scraper API 批量任务。
  </Card>

  <Card title="投递结果" icon="truck" href="/cn/products/scrapers/scrapers-library/data-delivery">
    Webhook、S3、Google Cloud、Azure、SFTP 和 Snowflake。
  </Card>

  <Card title="SERP API 异步请求" icon="magnifying-glass" href="/cn/products/serp-api/asynchronous-requests">
    搜索结果的异步区域、轮询和 webhook IP。
  </Card>

  <Card title="Web Unlocker API 异步请求" icon="unlock" href="/cn/products/web-unlocker/send-your-first-request">
    解锁请求的异步形式。
  </Card>
</CardGroup>
