2012-01-10 36 views
24

Tôi đã thấy giới hạn tốc độ 600 cuộc gọi/600 giây được đề cập bởi một số (ví dụ: quora).Giới hạn tốc độ API của biểu đồ Facebook và yêu cầu hàng loạt

Điều tôi muốn biết là liệu tôi có được phép thực hiện 600 batch yêu cầu trong 600 giây (yêu cầu hàng loạt bao gồm tối đa 50 yêu cầu) hay không.

+0

"Chúng tôi hiện đang hạn chế số lượng yêu cầu hàng loạt đến 50 . " - [Facebook] (https://developers.facebook.com/docs/reference/api/batch/). 50 cái gì? Yêu cầu mỗi phút, ngày, người dùng !? – Xeoncross

+0

Tôi muốn biết điều tương tự. 50 yêu cầu đồng thời, yêu cầu mỗi phút, mỗi ngày, mỗi lần thay tã? –

+2

Hmm .. Tôi muốn làm cho FB vui, nhưng đọc tài liệu của họ làm rõ mọi thứ: "Chúng tôi hiện giới hạn số lượng yêu cầu có thể là một lô đến 50, nhưng mỗi cuộc 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 loạt 10 cuộc gọi API sẽ được tính là 10 cuộc gọi và mỗi cuộc gọi trong loạt đóng góp vào giới hạn tài nguyên CPU theo cách tương tự. " –

Trả lời

11

Bạn nên xử lý tỷ lệ giới hạn theo chương trình bằng cách kiểm tra thông báo lỗi sau. Sau đó, bạn nên đặt vào vòng lặp thời gian chờ trước cuộc gọi tiếp theo nếu bạn gặp lỗi. Một trong những tài khoản ứng dụng lưu lượng truy cập cao của tôi xem lỗi này và sẽ chậm lại.

Từ: https://developers.facebook.com/docs/bestpractices/

Tỷ lệ giới hạn (API_EC_TOO_MANY_CALLS) Nếu ứng dụng của bạn đang thực hiện quá nhiều cuộc gọi, server API có thể đánh giá hạn chế bạn tự động, trả lại một "API_EC_TOO_MANY_CALLS" lỗi. Nói chung, điều này không nên xảy ra . Nếu có, đó là do đơn đăng ký của bạn đã được xác định để thực hiện quá nhiều cuộc gọi API. Lặp lại mã của bạn để bạn thực hiện càng ít cuộc gọi càng tốt để duy trì trải nghiệm người dùng cần thiết. Bạn cũng nên tránh các truy vấn FQL phức tạp. Để hiểu nếu ứng dụng của bạn đang được điều chỉnh, hãy truy cập Thông tin chi tiết và nhấp vào "Điều chỉnh".

chỉnh sửa

Theo báo cáo của IgY trong các chủ đề bình luận, mỗi yêu cầu trong đó đếm mẻ như 1. Ví dụ bạn 600 là giới hạn tối đa, có nghĩa là bạn có thể bắn ra 15 yêu cầu hàng loạt chứa 50 cuộc gọi mỗi.

+8

Cảm ơn bạn đã chỉ ra các phương pháp hay nhất. Tuy nhiên, câu hỏi của tôi là nếu các yêu cầu theo đợt và yêu cầu duy nhất được tính là 1 yêu cầu so với giới hạn. – daremon

+0

Nếu tài liệu của Facebook không cho biết tài liệu nào đang được thực hiện, thì bạn nên báo lỗi cẩn thận để không cho phép tài khoản nhà phát triển của bạn bị gắn cờ/bị thu hồi và theo dõi lỗi được trả về từ API. Cách tốt nhất là theo dõi những lỗi đó và làm theo những gì họ nói. – DMCS

+0

Liên kết không hoạt động nữa? Tôi cần phải thực hiện giới hạn tốc độ, tôi nhận được phản hồi gì? –

6

Từ kinh nghiệm của tôi, họ tính các yêu cầu riêng lẻ bất kể cách chúng được thực hiện (theo lô hay không).

Ví dụ: nếu tôi đang cố gắng thực hiện 1 đợt/giây chứa 10 yêu cầu, tôi sẽ sớm nhận được 'NHIỀU CUỘC GỌI'.

Nếu tôi đang thực hiện 1 đợt/10 giây, mỗi đợt có 10 yêu cầu, tôi không bao giờ thấy NHIỀU CUỘC GỌI NHIỀU.

Cá nhân tôi không thấy bất kỳ lý do nào để thích các đợt thực hiện cuộc gọi API thông thường.

2

Cuộc gọi hàng loạt chắc chắn được tính cho mỗi mục trong lô. Một cuộc gọi hàng loạt với 50 mục là tương đương với 50 cuộc gọi api bằng biểu đồ.

5

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

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

Trích dẫn từ: https://developers.facebook.com/docs/reference/api/batch/

tôi không có bằng chứng thực nghiệm tuy nhiên.

David

3

Tôi có một kinh nghiệm lớn và đau đớn khá bây giờ với API Facebook và tôi có thể khẳng định rằng:

  • Nếu một yêu cầu hàng loạt chứa 50 yêu cầu, sau đó nó đếm đến 50 yêu cầu trên Facebook
  • 1 yêu cầu! = 1 cuộc gọi. Facebook có định nghĩa riêng về cuộc gọi. Nếu yêu cầu của bạn lớn, trả lại rất nhiều dữ liệu hoặc tiêu thụ rất nhiều cpu thì nó sẽ được tính là một số cuộc gọi.

Cuộc gọi API biểu đồ thường xuyên nhất mà tôi đang làm chứa nhiều trường lồng nhau và tôi nhận thấy rằng tôi đã đạt đến "600 cuộc gọi/600 giây" sau khi thực hiện chỉ 200 lần. Vì vậy, về cơ bản cuộc gọi này được tính cho 3 trong trường hợp của tôi ...

Bạn có rất nhiều giới hạn tốc độ khác, nhưng không ai trong số họ được ghi nhận đúng ...

Các vấn đề liên quan