Trang chủ / Tài liệu / Giới hạn tốc độ

Giới hạn tốc độ

Cách giới hạn lưu lượng hoạt động, ý nghĩa của 429 ở đây và cách xây dựng ứng dụng khách không gặp tình trạng này.

Các giới hạn giúp phân bổ công bằng năng lực xử lý dùng chung của hệ thống thượng nguồn. Chúng áp dụng theo tài khoản, không theo khóa, nên việc thêm khóa không làm tăng mức trần của bạn.

Những gì bị giới hạn

Tiêu chíCách hoạt động
Yêu cầu đồng thờiSố yêu cầu đang được xử lý trên mỗi tài khoản. Đây là nguyên nhân thường gặp của lỗi 429.
Yêu cầu mỗi phútTốc độ gọi duy trì liên tục.
Token mỗi phútTổng thông lượng đầu vào và đầu ra.

Các gói không giới hạn áp dụng giới hạn sử dụng hợp lý thay vì số dư tín dụng — chúng loại bỏ phí tính theo token, chứ không loại bỏ mức trần về số yêu cầu đồng thời.

Xử lý 429 đúng cách

  1. Tăng thời gian chờ theo cấp số nhân kèm độ lệch ngẫu nhiên — 1 giây, 2 giây, 4 giây, 8 giây, mỗi khoảng cộng hoặc trừ một phần ngẫu nhiên.
  2. Giới hạn số yêu cầu đồng thời ở phía ứng dụng khách bằng semaphore thay vì gửi tất cả rồi thử lại các yêu cầu bị từ chối.
  3. Đưa công việc theo lô vào hàng đợi thay vì chạy song song tối đa; thông lượng bị giới hạn bởi số token mỗi phút, không phải số socket bạn mở.
  4. Xem 529 khác với 429 — đó là vấn đề về năng lực xử lý của hệ thống thượng nguồn, không phải do bạn, và thường hết trong vài giây.
import asyncio

sem = asyncio.Semaphore(8)      class=class="s">"c"># ceiling on concurrency, tune to your plan

async def ask(client, body):
    async with sem:
        return await client.post(class="s">"/v1/messages", json=body)
Các công cụ tác tử như Claude Code được thiết kế để triển khai nhiều tác vụ song song. Nếu gặp lỗi 429 khi sử dụng tác tử với cường độ cao, hãy giảm mức độ song song của công cụ trước khi nâng cấp gói.

Giảm tải thay vì thử lại