Giới hạn cuộc gọi API Đồ thị của Facebook là gì?


Câu trả lời:


58

Câu trả lời tốt nhất cho câu hỏi này từ một diễn đàn khác , từ Ash Rust năm 2010:

"Sau một số thử nghiệm và thảo luận với nhóm nền tảng Facebook, không có giới hạn chính thức nào mà tôi biết hoặc có thể tìm thấy trong tài liệu. Tuy nhiên, tôi đã tìm thấy 600 cuộc gọi mỗi 600 giây, mỗi mã thông báo và mỗi IP là về đâu họ ngăn cản bạn. Tôi cũng đã thấy một số giới hạn tỷ lệ dựa trên ứng dụng nhưng không có bất kỳ con số nào.

Theo nguyên tắc chung, một cuộc gọi mỗi giây không được giới hạn tốc độ. Bề ngoài, điều này có vẻ rất hạn chế nhưng hãy nhớ rằng bạn có thể thực hiện một số cuộc gọi nhất định và sử dụng API đăng ký để nhận các thay đổi. "


Thông tin trên hiện đã lỗi thời kể từ tháng 10 năm 2015. Hiện tại, nó có 200 lệnh gọi API cho mỗi người dùng trong bất kỳ cửa sổ 60 phút nhất định nào theo https://developers.facebook.com/docs/graph-api/advanced/rate-liosystem


12
@mangobug Mỗi mã thông báo và mỗi IP có nghĩa là .. chính xác là gì? Có nghĩa là tôi có thể nhân đôi số cuộc gọi nếu tôi sử dụng cùng một mã thông báo ở 2 IP khác nhau? Tôi có thể nhân đôi số cuộc gọi nếu tôi có 2 mã thông báo truy cập, vẫn xuất phát từ cùng một IP không?
Henley Chiu

2
@mangobug: Tôi nghĩ rằng bình luận cuối cùng Henley Chiu của / câu hỏi là khá quan trọng ở đây :)
Erik Kaplun

5
"nhưng hãy nhớ rằng bạn có thể thực hiện hàng loạt các cuộc gọi nhất định" Facebook giải thích rằng điều này sẽ không làm giảm số lượng lệnh gọi API hiệu quả đối với giới hạn của bạn: "Các cuộc gọi hàng loạt sẽ không làm giảm số lượng lệnh gọi api." developers.facebook.com/docs/marketing-api/...
heyitsbmo

3
Đây là không còn giá trị, xem câu trả lời người dùng của một người> 200 cuộc gọi API cho mỗi người dùng trong bất kỳ cửa sổ phút 60 cho
Brandon Romano

1
làm cách nào để có thêm người dùng cho ứng dụng của tôi? người dùng ứng dụng là gì? nó hiển thị bao nhiêu tôi có ở đâu?
Farzher

48

Bây giờ nó chính thức :

Mỗi ứng dụng được phân bổ 200 lệnh gọi API cho mỗi người dùng trong bất kỳ khoảng thời gian 60 phút nhất định nào .

Từ tài liệu của Facebook kể từ ngày 7 tháng 10 năm 2015 , đây là cách giới hạn tỷ lệ trên Graph API hoạt động:

  • Giới hạn tỷ lệ được thực hiện trên Facebook AppId của bạn. Nếu ứng dụng của bạn đạt đến giới hạn tốc độ, tất cả các cuộc gọi được thực hiện cho ứng dụng đó sẽ bị giới hạn không chỉ trên cơ sở mỗi người dùng.
  • Giới hạn tỷ lệ được tính bằng cách lấy số lượng người dùng ứng dụng của bạn có ngày hôm trước và thêm thông tin đăng nhập mới của ngày hôm nay. Điều này cung cấp số lượng người dùng cơ bản mà ứng dụng của bạn có.

Ví dụ: nếu ứng dụng của bạn có 10 người dùng ngày hôm qua và 5 lần đăng nhập mới hôm nay, thì điều đó sẽ cung cấp cho bạn cơ sở 15 người dùng. Điều này có nghĩa là ứng dụng của bạn có thể thực hiện ((10 + 5) * 200) = 3000 lệnh gọi API trong bất kỳ cửa sổ 60 phút nào.

Thông tin thêm tại đây: https://developers.facebook.com/docs/graph-api/advanced/rate-liosystem

- Cập nhật kể từ ngày 12 tháng 4 năm 2016 -

Facebook hiện đã có Bảng điều khiển giới hạn tỷ lệ , giúp dễ dàng xem liệu giới hạn tỷ lệ của ứng dụng của bạn có vượt quá hay không. Nó trông như thế này:

nhập mô tả hình ảnh ở đây


AFAIK giới hạn chỉ áp dụng cho các ứng dụng có API Đồ thị phiên bản 2.5 trở lên. Các ứng dụng cũ hơn chưa có giới hạn này.
Marius

Có thể nào nếu chúng ta đạt đến giới hạn, facebook để trả lại lỗi cho chúng ta Error: read ECONNRESET???
Konstantinos Natsios

Giới hạn thực tế không phải là trên mỗi người dùng, đó là mức trung bình cho những người dùng hoạt động hàng ngày: "Tổng cộng, ứng dụng của bạn có thể thực hiện 200 cuộc gọi mỗi giờ cho mỗi người dùng. Ví dụ: nếu ứng dụng của bạn có 100 người dùng, điều này có nghĩa là ứng dụng của bạn có thể tạo ra 20.000 cuộc gọi cuộc gọi. Đây không phải là giới hạn cho mỗi người dùng, vì vậy một người dùng có thể thực hiện 19.000 cuộc gọi trong số đó và một người khác có thể thực hiện 1.000 cuộc gọi. Giới hạn này được tính dựa trên số lượng cuộc gọi được thực hiện trong giờ trước. "
Jason Goemaat

2
Sẽ dễ dàng hơn rất nhiều nếu họ quay lại estimatedCallsLeftForThisHour: 1234sau mỗi cuộc gọi.
tháng

Câu trả lời hay và chính xác!
Alex Pliutau,

20

Theo chính sách dành cho nhà phát triển của Facebook "I. Tính năng và Chức năng" , giới hạn duy nhất là:

(> 5 triệu MAU) hoặc (> 100 triệu lệnh gọi API mỗi ngày) hoặc (> 50 triệu lần hiển thị mỗi ngày).

(Mau có nghĩa là người dùng hàng tháng)

Nó không nói họ sẽ làm gì sau khi vượt quá giới hạn ...

Hôm nay tôi đã chạy đến giới hạn này:

Các cuộc gọi đến mailbox_fql đã vượt quá tốc độ 300 cuộc gọi mỗi 600 giây.

Nhìn chung, mỗi bảng đều có các bộ giới hạn khác nhau, trong hầu hết các trường hợp, fql sẽ không trả về hơn 30 đối tượng trên mỗi fql. Ngoài ra, đối với tôi dường như bạn có thể vượt quá giới hạn cho một bảng và đồng thời có thể truy cập bảng khác, câu hỏi đặt ra là liệu api có bị chặn (sau khi vượt quá giới hạn) cho tất cả người dùng hay chỉ cho người dùng có vượt quá giới hạn ... Dù sao, sau khi bạn vượt quá giới hạn, bạn phải đợi khoảng 10 phút, hơn là được.

Vì vậy, về mặt kỹ thuật, bạn có thể nhận được tối đa 300 * 30 đối tượng mỗi 10 phút trong bảng mailbox_fql.


Đó là ngưỡng trên đó một hợp đồng cần phải được đặt đúng chỗ, không phải là giới hạn kỹ thuật khó khăn, đó là trong câu trả lời của Mangobug
IgY

không hẳn là "Các cuộc gọi đến mailbox_fql đã vượt quá tốc độ 300 cuộc gọi mỗi 600 giây." nghĩa là đó là một giới hạn cứng đã được thực thi trong cuộc sống thực. điều đó cũng cho thấy rằng có các giới hạn khác nhau cho các tabel khác nhau. (Cái nào đúng).
Visgean Skeloru

6

Từ tài liệu facebook

Giới hạn tỷ lệ cấp độ người dùng

Giới hạn tỷ lệ này được áp dụng ở cấp độ người dùng cho tất cả lệnh gọi api ngoại trừ api quảng cáo.

Giới hạn tỷ lệ xảy ra theo thời gian thực trên cửa sổ trượt. Mỗi cuộc gọi được ấn định một số điểm. Có điểm tối đa là n. Người dùng tích lũy điểm số theo thời gian dựa trên các cuộc gọi được thực hiện. Khi đạt đến điểm số tối đa, lỗi điều chỉnh sẽ xuất hiện. Lỗi, Mã: 17, Thông báo: Đã đạt đến giới hạn yêu cầu của người dùng

Giới hạn tỷ lệ cấp ứng dụng

Giới hạn tỷ lệ này được áp dụng trên toàn cầu ở cấp ứng dụng. Lệnh gọi api quảng cáo bị loại trừ.

Giới hạn tỷ lệ xảy ra theo thời gian thực trên cửa sổ trượt trong một giờ qua. Số liệu thống kê được thu thập về số lượng cuộc gọi và truy vấn được thực hiện, thời gian sử dụng cpu, bộ nhớ được sử dụng cho từng ứng dụng. Có một giới hạn cho mỗi tài nguyên nhân với người dùng hoạt động hàng tháng của một ứng dụng nhất định. Khi ứng dụng sử dụng nhiều hơn tài nguyên cho phép, lỗi sẽ xảy ra. Lỗi, Mã: 4, Thông báo: Đã đạt đến giới hạn yêu cầu ứng dụng

kiểm tra tài liệu này https://developers.facebook.com/docs/reference/ads-api/api-rate-liosystem/


Đâu là ví dụ về cách bạn có thể thực hiện cuộc gọi cấp người dùng và cuộc gọi cấp ứng dụng? Tất cả đều thông qua id ứng dụng bất kể đó sẽ là giới hạn cấp ứng dụng? Họ không phải là tuyệt vời với tài liệu về điều này.
Josh Bedo


Câu trả lời này là về API Marketing, không phải API Đồ thị như OP đã hỏi.
John Washam

3

Theo tài liệu FB, mỗi phần tử trong một lô được tính là một lệnh gọi riêng biệt.

Chúng tôi hiện giới hạn số lượng yêu cầu có thể trong một lô là 50, nhưng mỗi lệnh gọi trong lô được tính riêng cho mục đích tính toán giới hạn cuộc gọi API và giới hạn tài nguyên. Ví dụ: một lô 10 lệnh gọi API sẽ được tính là 10 lệnh gọi và mỗi lệnh gọi trong lô đóng góp vào giới hạn tài nguyên CPU theo cách tương tự.

Vui lòng kiểm tra điều này: https://developers.facebook.com/docs/graph-api/making-multiple-requests https://developers.facebook.com/docs/marketing-api/api-rate-liosystem

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.