# ขีดจำกัดงานพร้อมกันและการหยุดชั่วคราวอัตโนมัติ

> ขีดจำกัดงานพร้อมกันของ YesCaptcha (ERROR_THREADS_MAXIMUM ไม่หักพอยต์และไม่นับรวมการหยุดชั่วคราว) การหยุดชั่วคราวอัตโนมัติเมื่อมีข้อผิดพลาดมากเกินไป (100 ครั้งใน 1 นาที หยุดชั่วคราว 5 นาที ERROR_IP_BLOCKED_5MIN) และแคชพารามิเตอร์ที่ไม่ถูกต้อง (cached)

Source: https://docs.yescaptcha.com/th/api/rate-limits/ · Last verified: 2026-10-15

> This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/api/rate-limits/

เพื่อให้ทุกคนได้รับการจดจำที่รวดเร็ว YesCaptcha มีกฎป้องกันสามข้อ ได้แก่ จำกัด**จำนวนงานที่กำลังประมวลผลพร้อมกัน**ต่อบัญชี (ขีดจำกัดงานพร้อมกัน) `clientKey` เดียวกันที่เกิด**ข้อผิดพลาดมากเกินไปในเวลาสั้น ๆ จะถูกหยุดชั่วคราว**ไม่กี่นาที (หยุดชั่วคราวอัตโนมัติ) และ**พารามิเตอร์ที่ตัดสินแล้วว่าไม่ถูกต้อง**จะได้รับข้อผิดพลาดเดิมกลับทันทีในช่วงระยะเวลาหนึ่ง (แคชพารามิเตอร์ที่ไม่ถูกต้อง) ทั้งสามกรณีนี้ไม่หักพอยต์

## ขีดจำกัดงานพร้อมกัน

เราจำกัดจำนวนงานที่กำลังประมวลผลในเวลาเดียวกันตามบัญชีและตามประเภทงาน โดยจำกัดจำนวนงานพร้อมกัน ไม่ใช่จำนวนคำขอต่อนาที

-   งานนับว่า “กำลังประมวลผล” ตั้งแต่เรียก `createTask` จนกว่าการเรียกนั้นจะคืนค่า ประเภทการจดจำภาพคืนผลลัพธ์ใน `createTask` โดยตรง ดังนั้น **จำนวนงานพร้อมกัน ≈ จำนวนงานที่ส่งต่อวินาที × เวลาที่ใช้ต่องาน** เช่น งานละ 0.5 วินาที ส่งวินาทีละ 40 งาน จำนวนงานพร้อมกันจะอยู่ที่ประมาณ 20
-   คำขอภายใต้บัญชีเดียวกันจะนับรวมกัน ส่วนแต่ละประเภทงานนับแยกกัน
-   คำขอที่เกินโควตาจะได้รับ `ERROR_THREADS_MAXIMUM` ทันที โดย `limit` ในการตอบกลับคือขีดจำกัดปัจจุบันของคุณ **ไม่หักพอยต์ และไม่นับรวมการหยุดชั่วคราวอัตโนมัติ**
-   เมื่อเซิร์ฟเวอร์จดจำทำงานไม่ทัน บัญชีที่ใช้เวลาจดจำมากที่สุดจะถูก**ลดขีดจำกัดของงานประเภทนั้นลงครึ่งหนึ่งชั่วคราว และคืนค่าอัตโนมัติหลังผ่านไป 10 นาที** เป็นเพียงการจำกัดความเร็ว ไม่ได้หยุดบัญชีชั่วคราว
-   หากต้องการโควตาที่สูงขึ้น โปรด[ติดต่อฝ่ายสนับสนุน](https://docs.yescaptcha.com/th/help/contact.md) โควตาเริ่มต้นของแต่ละประเภทเมื่อกำหนดแล้วจะประกาศในหน้านี้และใน[บันทึกการอัปเดตบริการ](https://docs.yescaptcha.com/th/changelog.md)

```json
{
  "errorId": 1,
  "errorCode": "ERROR_THREADS_MAXIMUM",
  "errorDescription": "This account already has 30 tasks of this type in progress, which is the limit. Lower the concurrency and wait for pending requests to return before sending more; rejected requests are not charged and do not lead to a block.",
  "limit": 30
}
```

(ตัวเลขในตัวอย่างใช้เพื่อประกอบการอธิบายเท่านั้น)

### แนวทางที่แนะนำ

1.  จำกัด “จำนวนคำขอที่รอผลลัพธ์พร้อมกัน” ในโปรแกรม เช่น ใช้ semaphore หรือ thread pool ขนาดคงที่ แทนที่จะควบคุมเพียงจำนวนที่ส่งต่อวินาที
2.  เมื่อได้รับ `ERROR_THREADS_MAXIMUM` ให้รอให้คำขอที่ส่งไปแล้วคืนค่าก่อนส่งคำขอใหม่ หรือรอ 1 ถึง 2 วินาทีแล้วลองใหม่ ห้ามลองซ้ำเป็นลูปทันที
3.  ส่งงานจำนวนมากให้กระจายอย่างสม่ำเสมอ อย่าส่งงานนับพันนับหมื่นออกไปพร้อมกันในครั้งเดียว

ตัวอย่าง Python (asyncio):

```python
import asyncio
import os

import aiohttp

CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"]
LIMIT = 15  # below your concurrency limit
sem = asyncio.Semaphore(LIMIT)

async def solve(session, task):
    async with sem:  # at most LIMIT requests in progress at a time
        result = {}
        for attempt in range(5):
            async with session.post(
                "https://api.yescaptcha.com/createTask",
                json={"clientKey": CLIENT_KEY, "task": task},
            ) as resp:
                result = await resp.json()
            if result.get("errorCode") != "ERROR_THREADS_MAXIMUM":
                return result
            await asyncio.sleep(1 + attempt)  # over the limit: wait and retry
        return result
```

## หยุดชั่วคราวอัตโนมัติ

`clientKey` เดียวกันที่สร้างคำขอผิดพลาดจำนวนมากในเวลาสั้น ๆ จะถูกหยุดการสร้างงานชั่วคราวโดยอัตโนมัติ:

| เงื่อนไขที่ทำให้เกิด | ระยะเวลาที่หยุดชั่วคราว |
| --- | --- |
| ข้อผิดพลาดที่ระบุด้านล่างสะสมครบ 100 ครั้งภายในนาทีปฏิทินเดียวกัน | 5 นาที |
| เกิด `ERROR_IMAGE_TYPE_NOT_SUPPORTED` 1 ครั้ง | 30 นาที |
| โดน “แคชพารามิเตอร์ที่ไม่ถูกต้อง” 1,000 ครั้งภายในนาทีปฏิทินเดียวกัน | 5 นาที |

ข้อผิดพลาดที่นับรวมการหยุดชั่วคราว:

-   [`ERROR_REQUEST_FORMATS`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_REQUEST_FORMATS)
-   [`ERROR_TASK_ABSENT`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_TASK_ABSENT)
-   [`ERROR_TASK_NOT_SUPPORTED`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_TASK_NOT_SUPPORTED)
-   [`ERROR_KEY_DOES_NOT_EXIST`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_KEY_DOES_NOT_EXIST)
-   [`ERROR_KEY_EXPIRED`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_KEY_EXPIRED)
-   [`ERROR_TASKID_INVALID`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_TASKID_INVALID)
-   [`ERROR_SETTLEMENT_FAILED`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_SETTLEMENT_FAILED)
-   [`ERROR_HIGH_DEMAND_DOMAIN`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_HIGH_DEMAND_DOMAIN)
-   [`ERROR_ZERO_CAPTCHA_FILESIZE`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_ZERO_CAPTCHA_FILESIZE)
-   [`ERROR_TOO_BIG_CAPTCHA_FILESIZE`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_TOO_BIG_CAPTCHA_FILESIZE)
-   [`ERROR_IMAGE_TYPE_NOT_SUPPORTED`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_IMAGE_TYPE_NOT_SUPPORTED)
-   [`ERROR_ILLEGAL_IMAGE`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_ILLEGAL_IMAGE)

`ERROR_THREADS_MAXIMUM` ที่คืนจากขีดจำกัดงานพร้อมกันของบัญชี (มีฟิลด์ `limit`) ไม่นับรวม ส่วนข้อผิดพลาดชื่อเดียวกันที่คืนเมื่อบริการจดจำไม่ว่าง (ไม่มี `limit`) จะนับรวม ส่วนการจดจำล้มเหลว (`ERROR_CAPTCHA_UNSOLVABLE`) ยอดคงเหลือไม่พอ (`ERROR_ZERO_BALANCE`) ฟิลด์ที่ขาด (`ERROR_REQUIRED_FIELDS`) และคำถามที่ไม่รองรับ (`ERROR_UNKNOWN_QUESTION`) เป็นต้น ไม่นับรวม

ระหว่างที่ถูกหยุดชั่วคราว:

-   ส่งผลเฉพาะ `createTask` และ `getBalance` ซึ่งจะคืน `ERROR_IP_BLOCKED_5MIN` ส่วน `getTaskResult` ไม่ได้รับผลกระทบ งานที่สร้างก่อนการหยุดชั่วคราวยังตรวจสอบผลลัพธ์ได้ตามปกติ
-   การตอบกลับมี `retryAfter` (เหลืออีกกี่วินาที) `blockReason` (รหัสข้อผิดพลาดที่ทำให้ถูกหยุดชั่วคราว) และ `blockDetail` (ประเภท URL และ sitekey ของคำขอลักษณะนั้น) ให้แก้โปรแกรมตามข้อมูลเหล่านี้
-   การส่งคำขอต่อไปไม่ทำให้ระยะเวลาหยุดชั่วคราวยาวขึ้น เมื่อครบกำหนดจะกลับมาใช้งานได้อัตโนมัติ ไม่ต้องติดต่อฝ่ายสนับสนุน
-   ในแดชบอร์ดของ [yescaptcha.com](https://yescaptcha.com/) ดูบันทึกการหยุดชั่วคราวในช่วง 24 ชั่วโมงล่าสุดได้

```json
{
  "errorId": 1,
  "errorCode": "ERROR_IP_BLOCKED_5MIN",
  "errorDescription": "...",
  "retryAfter": 182,
  "blockReason": "ERROR_TASK_NOT_SUPPORTED"
}
```

## แคชพารามิเตอร์ที่ไม่ถูกต้อง

ข้อผิดพลาดบางประเภทขึ้นอยู่กับพารามิเตอร์ของคำขอ ส่งพารามิเตอร์เดิมซ้ำก็ได้ผลลัพธ์เดิม:

-   [`ERROR_RECAPTCHA_INVALID_SITEKEY`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_RECAPTCHA_INVALID_SITEKEY)
-   [`ERROR_RECAPTCHA_INVALID_DOMAIN`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_RECAPTCHA_INVALID_DOMAIN)
-   [`ERROR_INVALID_KEY_TYPE`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_INVALID_KEY_TYPE)
-   [`ERROR_DOMAIN_NOT_ALLOWED`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_DOMAIN_NOT_ALLOWED)

ข้อผิดพลาดเหล่านี้ไม่นับรวมการหยุดชั่วคราว แต่จะถูกแคชทั่วทั้งไซต์ โดยแคช 2 นาทีหลังตัดสินครั้งแรก และถ้าได้รับการยืนยันซ้ำภายใน 1 ชั่วโมงจะแคช 10 นาที ระหว่างที่แคชอยู่ คำขอเดียวกัน (ประเภทงานและ `websiteKey` เดียวกัน หรือโดเมนเว็บไซต์เดียวกัน) จะได้รับข้อผิดพลาดเดิมทันที ไม่หักพอยต์ และการตอบกลับมี `"cached": true` `retryAfter` (จำนวนวินาทีที่เหลือของแคช) และ `badRequest` (พารามิเตอร์ที่ตรงกัน) เมื่อแก้ `websiteKey` หรือเปลี่ยนประเภทงาน จะมีผลทันที

## ความแตกต่างระหว่างขีดจำกัดงานพร้อมกันและการหยุดชั่วคราวอัตโนมัติ

|  | ขีดจำกัดงานพร้อมกัน | หยุดชั่วคราวอัตโนมัติ |
| --- | --- | --- |
| สาเหตุ | มีงานที่กำลังประมวลผลพร้อมกันมากเกินไป | มีคำขอที่ผิดพลาดมากเกินไปในเวลาสั้น ๆ |
| ลักษณะที่เกิดขึ้น | ปฏิเสธเฉพาะคำขอส่วนที่เกิน โดยคืน `ERROR_THREADS_MAXIMUM` | `clientKey` นี้ถูกหยุดการสร้างงานชั่วคราว โดยคืน `ERROR_IP_BLOCKED_5MIN` |
| การกลับมาใช้งาน | ส่งคำขอใหม่ได้ทันทีที่มีคำขอประมวลผลเสร็จ ส่วนขีดจำกัดที่ลดครึ่งหนึ่งชั่วคราวจะคืนค่าหลังผ่านไป 10 นาที | กลับมาใช้งานอัตโนมัติเมื่อครบกำหนด |
| หักพอยต์ | ไม่หัก | ไม่หัก |
