Bỏ qua điều hướng
AdsPower.vn

Đây là trang thông tin độc lập, không phải trang chính thức và không có quan hệ sở hữu hay hợp tác với AdsPower.

Xử lý khi chạm trần giới hạn tốc độ gọi API AdsPower

Biên soạn bởi Cập nhật

Người viết script tự động hoá cho AdsPower sớm muộn cũng gặp tình huống này: vòng lặp chạy quá nhanh, gọi API dồn dập, và một số lệnh gọi bắt đầu thất bại. Đây là lúc bạn đã chạm giới hạn tốc độ gọi API theo bậc giá đang dùng.

Giới hạn tốc độ gọi theo từng bậc giá

Theo bảng tính năng trên trang giá chính hãng (kiểm tra trực tiếp ngày 25/07/2026, nguồn adspower.com/vn/pricingadspower.com/pricing):

Bậc giá Giới hạn tốc độ gọi Local API
Free Không có API
Professional 120 lần/phút
Business 300 lần/phút
Enterprise 600 lần/phút

120 lần/phút ở bậc Professional nghe có vẻ nhiều, nhưng thực tế cạn rất nhanh nếu script của bạn gọi API liên tục để kiểm tra trạng thái, mở/đóng hàng loạt hồ sơ, hoặc chạy song song nhiều tiến trình cùng lúc trên cùng tài khoản.

Dấu hiệu cho thấy script đang chạm trần

  • Các lệnh gọi API bắt đầu thất bại hàng loạt dù trước đó vẫn chạy bình thường, đặc biệt khi bạn vừa tăng tốc độ vòng lặp hoặc chạy thêm script song song.
  • Lỗi xuất hiện tập trung vào những khoảng thời gian bạn gọi API dồn dập (ví dụ ngay sau khi bắt đầu một đợt tạo hàng loạt), không phải lỗi xảy ra ngẫu nhiên rải rác.
  • Cấu trúc chính xác của mã lỗi hoặc thông báo trả về khi vượt giới hạn chưa được xác minh trong phạm vi bài này — nên đối chiếu với tài liệu Postman chính hãng (documenter.getpostman.com/view/45822952/2sB34hEzQH) hoặc quan sát trực tiếp phản hồi thực tế của script bạn để nhận diện chính xác.

Cách xử lý

1. Chèn độ trễ cố định giữa các lần gọi

Cách đơn giản nhất: tính ra khoảng cách tối thiểu giữa hai lần gọi dựa trên giới hạn của bậc giá, rồi chèn độ trễ (sleep) tương ứng trong vòng lặp. Ví dụ ở bậc Professional (120 lần/phút, trung bình 0,5 giây/lần theo lý thuyết), nên dùng độ trễ rộng rãi hơn mức lý thuyết, ví dụ 1 giây/lần, để chừa khoảng đệm cho các lệnh gọi khác đang chạy song song trên cùng tài khoản:

import time

KHOANG_CACH_GIAY = 1  # rộng rãi hơn mức lý thuyết 120 lần/phút của bậc Professional

for muc in danh_sach_can_xu_ly:
    goi_api(muc)  # thay bằng lệnh gọi Local API thật theo tài liệu chính hãng
    time.sleep(KHOANG_CACH_GIAY)

2. Dùng cơ chế thử lại (retry) với khoảng chờ tăng dần

Khi một lệnh gọi thất bại vì nghi ngờ chạm giới hạn, không nên thử lại ngay lập tức (dễ làm tình trạng nặng thêm). Dùng khoảng chờ tăng dần (exponential backoff) — chờ lâu hơn sau mỗi lần thử lại thất bại:

import time

def goi_api_co_thu_lai(ham_goi_api, so_lan_toi_da=3):
    for lan_thu in range(so_lan_toi_da):
        try:
            return ham_goi_api()
        except Exception as loi:
            if lan_thu == so_lan_toi_da - 1:
                raise
            thoi_gian_cho = 2 ** lan_thu  # 1s, 2s, 4s...
            print(f"Gọi API lỗi ({loi}), chờ {thoi_gian_cho}s rồi thử lại...")
            time.sleep(thoi_gian_cho)

3. Rải đều lệnh gọi khi chạy nhiều hồ sơ song song

Nếu bạn chạy nhiều script hoặc nhiều luồng song song trên cùng tài khoản, tổng số lệnh gọi của tất cả các luồng cộng lại mới là con số so với giới hạn — không phải tính riêng từng luồng. Cần một cơ chế điều phối chung (ví dụ hàng đợi tập trung mà mọi luồng đều gọi qua, thay vì mỗi luồng tự gọi API độc lập không kiểm soát) để tổng tốc độ gọi của toàn hệ thống không vượt giới hạn của bậc giá.

4. Giảm số lệnh gọi không cần thiết

Trước khi nghĩ đến nâng gói, rà lại script xem có đang gọi API thừa không — ví dụ gọi kiểm tra trạng thái hồ sơ lặp lại quá thường xuyên trong lúc chờ, thay vì chờ một khoảng hợp lý rồi mới kiểm tra lại. Giảm số lệnh gọi không cần thiết thường giải quyết được phần lớn tình trạng chạm trần mà không cần thay đổi gì về hạ tầng.

5. Nâng bậc giá nếu nhu cầu thực sự vượt giới hạn hiện tại

Nếu đã tối ưu độ trễ và giảm lệnh gọi thừa mà vẫn thường xuyên chạm trần 120 lần/phút của bậc Professional, đây là dấu hiệu cho thấy quy mô vận hành đã vượt quá bậc giá đang dùng. Bậc Business (300 lần/phút) hoặc Enterprise (600 lần/phút) là bước tiếp theo hợp lý — xem chi tiết các bậc tại trang AdsPowerbảng giá.

Giới hạn này có áp dụng cho RPA dựng sẵn không?

Không theo cùng cơ chế. RPA dựng sẵn chạy trực tiếp trong ứng dụng AdsPower, không gọi qua Local API theo cách một script bên ngoài gọi vào — nên giới hạn tốc độ gọi API theo bậc giá không phải là yếu tố cần tính toán khi dùng RPA. Đây là một trong những lý do người không cần tích hợp hệ thống riêng nên cân nhắc RPA trước khi đầu tư viết script, xem so sánh đầy đủ tại bài chọn giữa RPA dựng sẵn và tự viết script cho AdsPower.

Áp dụng vào các bài kết nối framework cụ thể

Giới hạn tốc độ gọi áp dụng cho mọi lệnh gọi Local API, bất kể bạn dùng nó để mở hồ sơ cho Selenium, Puppeteer hay Playwright, hay để tạo hồ sơ hàng loạt. Xem cách áp dụng cụ thể tại các bài kết nối Selenium Python với AdsPower, kết nối Puppeteer Node.js với AdsPower, kết nối Playwright với AdsPower, và tạo hồ sơ hàng loạt bằng Python qua API. Tìm hiểu khái niệm nền tảng của Local API tại bài API cục bộ AdsPower là gì.

Câu hỏi thường gặp

Giới hạn tốc độ gọi API tính theo tài khoản hay theo từng script riêng?

Giới hạn được công bố theo bậc giá của tài khoản, nên nhiều khả năng tính chung cho toàn bộ lệnh gọi Local API từ tài khoản đó, bất kể gọi từ một script hay nhiều script chạy song song. Nếu bạn chạy nhiều script cùng lúc trên cùng tài khoản, tổng số lệnh gọi của tất cả script cộng lại mới là con số cần so sánh với giới hạn, không phải tính riêng từng script.

Làm sao biết chính xác cấu trúc lỗi khi API từ chối vì vượt giới hạn?

Cấu trúc mã lỗi hoặc thông báo cụ thể khi vượt giới hạn tốc độ gọi chưa được xác minh trong phạm vi bài này — nên kiểm tra tài liệu Postman chính hãng hoặc quan sát trực tiếp phản hồi thực tế khi test script của bạn để biết chính xác dấu hiệu nhận diện.

Nâng gói có phải cách duy nhất để tăng giới hạn tốc độ gọi không?

Không phải duy nhất. Trước khi nâng gói, nên tối ưu lại cách script gọi API: gộp các thao tác có thể gộp, giãn cách hợp lý, tránh gọi API lặp lại không cần thiết (ví dụ gọi kiểm tra trạng thái quá thường xuyên). Nếu đã tối ưu mà vẫn thường xuyên chạm trần, lúc đó nâng gói là hợp lý.

Chạy nhiều hồ sơ song song bằng script có dễ chạm giới hạn hơn chạy tuần tự không?

Có. Chạy song song nghĩa là nhiều script hoặc nhiều luồng gọi Local API gần như cùng lúc, cộng dồn số lệnh gọi trong cùng một khung thời gian ngắn nhanh hơn nhiều so với chạy tuần tự từng hồ sơ một. Cần tính toán độ trễ tổng thể của toàn bộ hệ thống, không chỉ tính riêng từng luồng.

Có công cụ nào tự động giới hạn tốc độ gọi trong code Python/Node.js không?

Có, các kỹ thuật giới hạn tốc độ gọi (rate limiting) như hàng đợi có độ trễ cố định hoặc thuật toán token bucket là kỹ thuật lập trình tổng quát, có thể tự cài đặt hoặc dùng thư viện có sẵn trong hệ sinh thái Python/Node.js, không phải tính năng riêng của AdsPower.

Phần mềm liên quan