Cách Tôn Trọng Giới Hạn Tốc Độ: Điều Tiết Yêu Cầu API và Web

Cách Tôn Trọng Giới Hạn Tốc Độ: Điều Tiết Yêu Cầu API và Web

Scrapeless Web Unlocker truy xuất nội dung từ các URL công khai để ứng dụng của bạn có thể phân tích phản hồi trong một ngân sách yêu cầu được kiểm soát riêng.

Tóm tắt

  • Giới hạn tốc độ được áp dụng trong phạm vi đếm của nhà cung cấp. Nhiều worker có thể tiêu thụ cùng một hạn mức tài khoản hoặc endpoint.
  • Độ song song và tốc độ yêu cầu đo lường những thứ khác nhau. Hạn chế cả khối lượng công việc đang chạy và số yêu cầu mới được khởi tạo.
  • Thu thập hiệu quả giúp giảm nhu cầu trước khi gửi yêu cầu. Loại bỏ URL trùng lặp, tái sử dụng dữ liệu cache còn hợp lệ và chỉ yêu cầu những trang cần thiết.
  • Một job bị giới hạn cần có trạng thái chưa hoàn thành rõ ràng. Một tập thu thập bị chặn không bao giờ được ghi nhận là bộ dữ liệu hoàn chỉnh.

Tôn Trọng Giới Hạn Bắt Đầu Trước Khi Gửi Yêu Cầu Đầu Tiên

Tôn trọng giới hạn tốc độ nghĩa là giữ hoạt động yêu cầu trong phạm vi hạn mức được dịch vụ công bố, bao gồm quy tắc đếm và ràng buộc burst của họ. Một bộ thu thập cư xử “lịch sự” sau khi đã chạm giới hạn thực ra đã tiêu thụ nhiều tài nguyên hơn dự kiến. Hãy xây dựng kiểm soát cấp quyền trước khi gửi yêu cầu mạng: công việc đi vào hàng đợi, bộ lập lịch kiểm tra ngân sách áp dụng, và chỉ công việc được phép mới được bắt đầu. Cách tiếp cận này giúp kế hoạch yêu cầu có thể được xem xét trước khi nó tạo ra lưu lượng.

Đọc chính sách của nhà cung cấp cho đúng tài nguyên bạn dùng. Giới hạn có thể áp dụng cho một tài khoản, một khóa API, một người dùng, một địa chỉ IP, một route, hoặc kết hợp những yếu tố này. Các endpoint tìm kiếm và xuất khẩu có thể có ràng buộc khác nhau. Một hạn mức theo ngày có thể cùng tồn tại với một cửa sổ trượt ngắn hơn. Hãy coi một bộ đếm không được ghi tài liệu là không rõ, thay vì giả định rằng chính sách của endpoint khác cũng áp dụng cho nó.

Định nghĩa trạng thái HTTP 429 xác định giới hạn về khối lượng yêu cầu, nhưng không chuẩn hóa cách mọi dịch vụ nhận diện người gọi hoặc đếm yêu cầu. Do đó một trang lỗi không thể thể hiện đầy đủ chính sách. Giữ tài liệu đã công bố và cấu hình tài khoản của bạn bên cạnh cấu hình job, và chỉ định một người phụ trách có thể giải quyết các hạn mức chưa rõ trước khi một đợt thu thập lớn bắt đầu.

Chuyển Chính Sách Thành Ngân Sách Dùng Chung

Một ngân sách dùng chung ngăn các worker độc lập tiêu cùng một hạn mức một cách tách biệt. Giả sử một tài khoản giả định cho phép sáu mươi yêu cầu mới mỗi phút, trong khi ba tiến trình mỗi cái đều nghĩ rằng mình sở hữu sáu mươi. Mỗi tiến trình có thể có vẻ tuân thủ cục bộ trong khi tài khoản lại vượt quá hạn mức tổng. Giải pháp là một quyết định cấp quyền duy nhất cho tất cả công việc thuộc về tài khoản và cửa sổ chính sách đó.

Hãy dùng con số giả định chỉ để hiểu bài toán số học; đó không phải hạn mức Scrapeless hay tốc độ vận hành được khuyến nghị. Dành chỗ cho sử dụng tương tác, các cuộc gọi giám sát và những ứng dụng khác dùng chung tài khoản. Nếu không thể đo được các bên tiêu dùng đó, hãy giữ phần ngân sách dành cho bộ thu thập ở mức thận trọng và ghi rõ mức độ không chắc chắn. Tách trần cứng của nhà cung cấp khỏi lượng nhỏ hơn mà job của bạn được phép tiêu thụ.

Theo dõi đơn vị mà nhà cung cấp thực sự tính vào giới hạn. Một số chính sách đếm số yêu cầu; số khác đếm bản ghi, đơn vị xử lý, byte, hoặc độ phức tạp thao tác. Một batch chứa nhiều thao tác vẫn có thể tiêu tốn năng lực đáng kể. Ghi lại phạm vi ngân sách và mô hình chi phí với từng mục hàng đợi để một lần xuất khẩu tốn kém không được cấp quyền như thể nó chỉ là một truy vấn metadata nhẹ.

Kiểm Soát Riêng Việc Khởi Tạo Yêu Cầu và Khối Lượng Công Việc Đang Chạy

Điều tiết tốc độ yêu cầu (request pacing) kiểm soát tần suất công việc mới được khởi tạo; giới hạn song song (concurrency) kiểm soát lượng công việc còn đang hoạt động cùng lúc. Chỉ có giới hạn song song thì không thể đảm bảo tốc độ yêu cầu, vì phản hồi nhanh cho phép worker bắt đầu nhiều thao tác trong cùng một cửa sổ. Chỉ có giới hạn tốc độ bắt đầu thì không bảo vệ được bộ nhớ khi phản hồi trở nên lớn hoặc chậm. Hãy dùng cả hai cơ chế quanh cùng một bộ phân phối.

Các job trình duyệt cần một phân biệt bổ sung. Mở một trang có thể sinh ra yêu cầu tài liệu, script, ảnh và API nền. Một lần chuyển hướng (navigation) không nhất thiết là một yêu cầu lên origin. Tránh tuyên bố tuân thủ chỉ dựa trên số lệnh tự động hóa trình duyệt. Đối với quy trình dữ liệu công khai, hãy hiểu hành động nào tạo lưu lượng mạng và giới hạn các trang, tương tác mà tác vụ thực sự cần.

Đặt giới hạn dung lượng hàng đợi cũng như số worker. Một tồn đọng không giới hạn sẽ biến đợt tăng lưu lượng ngắn thành hàng giờ công việc cũ. Gán hạn sử dụng cho tác vụ và mức ưu tiên rõ ràng. Một quan sát giá đến sau cửa sổ báo cáo có thể không còn hữu ích. Hãy loại bỏ có chủ đích công việc lỗi thời chưa gửi, và ghi lại quyết định đó để các hệ thống hạ nguồn có thể phân biệt giới hạn độ tươi với bản ghi bị thiếu.

Kiểm soátGiới Hạn Điều GìKhông Chứng Minh Được Điều Gì
Ngân sách tốc độ bắt đầuCác thao tác mới trong một cửa sổ chính sáchRằng các thao tác tốn kém có chi phí bằng nhau
Giới hạn song songCác thao tác đang thực hiệnRằng số lần khởi tạo yêu cầu vẫn nằm dưới giới hạn theo cửa sổ
Giới hạn hàng đợiCông việc chưa gửi và thời gian chờRằng bộ dữ liệu đã hoàn thành có đầy đủ mọi bản ghi mong đợi
Giới hạn chi tiêuMức độ rủi ro tài chính cho jobRằng website mục tiêu cho phép lượng truy cập đó

Giảm Nhu Cầu Trước Khi Tăng Năng Lực

Giảm bớt các yêu cầu không cần thiết giúp bảo toàn năng lực cho thông tin mà job thực sự cần. Chuẩn hóa URL đích một cách cẩn thận, loại bỏ tác vụ trùng lặp và cache kết quả có thể tái sử dụng chỉ ở nơi chính sách tài nguyên cho phép. Các query string khác nhau có thể đại diện cho nội dung khác nhau, vì vậy việc chuẩn hóa phải giữ lại các bộ lọc và trạng thái trang có ý nghĩa. Khử trùng lặp hợp nhất các tài nguyên khác nhau sẽ tiết kiệm số cuộc gọi nhưng đánh đổi chất lượng dữ liệu.

HTTP cache controls xác định xem một phản hồi có thể được lưu trữ và tái sử dụng bởi bộ nhớ đệm HTTP hay không. Một bộ nhớ đệm ứng dụng cục bộ cũng cần một quy tắc độ tươi: quyết định giá trị có thể cũ đến mức nào cho nhiệm vụ nghiệp vụ. Mô tả danh mục và quan sát tồn kho trực tiếp có các yêu cầu độ tươi khác nhau. Lưu thời điểm quan sát cùng với giá trị thay vì âm thầm trình bày nội dung được lưu đệm như là hiện tại.

Sử dụng thông báo do nguồn hỗ trợ thay vì kiểm tra lặp lại khi quy trình làm việc cho phép. Các thực tiễn sử dụng GitHub REST minh họa cách các yêu cầu có điều kiện và việc phân phối sự kiện có thể giảm truy vấn thăm dò không cần thiết. Đó là các ví dụ về hợp đồng của một nhà cung cấp, không phải các ngoại lệ phổ quát khỏi việc tính hạn ngạch. Xác nhận cách dịch vụ bạn chọn tính các phản hồi có điều kiện và các cuộc gọi tiếp theo cho thông báo.

Giữ Phân Trang Trong Cùng Hạn Mức

Phân trang là một phần của ngân sách yêu cầu, bao gồm cả các trang không trả về bản ghi hữu ích mới. Ước tính phạm vi duyệt cần thiết trước khi chạy và dừng tại điểm đánh dấu kết thúc được ghi trong tài liệu. Liên tục yêu cầu trang cuối cùng vì quy tắc kết thúc sai sẽ tiêu tốn dung lượng mà không cải thiện phạm vi bao phủ. Lưu trạng thái tiếp tục cùng với truy vấn để bước tiếp theo tuân theo cùng định nghĩa tập kết quả.

Kích thước trang thay đổi sự đánh đổi giữa số lượng thao tác và chi phí phản hồi. Các trang lớn hơn có thể giảm số vòng trao đổi, nhưng chúng có thể tăng sử dụng bộ nhớ, thời gian xử lý và khối lượng công việc của dịch vụ. Chọn kích thước được hỗ trợ phù hợp với nhiệm vụ thay vì coi giá trị tối đa của nhà cung cấp là mặc định. Một tập hợp đại diện nhỏ có thể cho thấy việc phân tích cú pháp hoặc lưu trữ trở thành giai đoạn giới hạn.

Chỉ đánh dấu checkpoint sau khi các bản ghi của trang đã được ghi nhận vào đích. Nếu trạng thái tiếp tục được tiến lên trước khi lưu trữ hoàn tất, bộ dữ liệu có thể chứa một khoảng trống âm thầm. Một checkpoint hữu ích bao gồm dấu vân tay truy vấn, số bản ghi đã chấp nhận, điểm đánh dấu hoàn thành và thời gian thu thập. Giữ thông tin xác thực ngoài các tệp checkpoint và xóa bớt các giá trị tiếp tục bất minh nếu nhà cung cấp coi chúng là nhạy cảm.

Làm Cho Phản Hồi Hạn Mức Hiển Thị Rõ Với Chủ Job

Một phản hồi hạn mức nên dừng việc phân công mới trong phạm vi bị ảnh hưởng và để job ở trạng thái rõ ràng. Lưu trạng thái, chi tiết phản hồi đã được làm sạch và mã chính sách để chẩn đoán. Đừng gắn nhãn một kết quả rỗng là thu thập thành công khi máy chủ thực sự từ chối yêu cầu. Người dùng cần biết liệu không tồn tại bản ghi hay job đã không lấy được chúng.

Giữ các lỗi ủy quyền, hạn ngạch, xác thực và khả dụng tách biệt. Một phản hồi bị cấm có thể đại diện cho một quyết định cấp phép. Một yêu cầu sai định dạng có thể tiêu tốn công sức mà không bao giờ trở nên hợp lệ. Cùng một mã trạng thái HTTP có thể mang chi tiết lỗi cụ thể của nhà cung cấp, vì vậy hãy đọc nội dung phản hồi được ghi trong tài liệu trước khi phân loại sự cố. Để lại các job chưa được giải quyết cho chủ sở hữu của chúng cùng với bằng chứng cần thiết để đưa ra quyết định lập lịch.

Báo cáo vận hành nên bao gồm công việc đã chấp nhận, công việc đã hoàn thành, công việc hoãn chưa gửi và công việc bị từ chối. So sánh những điều này với các bản ghi đã lưu và tín hiệu hoàn thành của nguồn. Một dashboard chỉ hiển thị các cuộc gọi thành công sẽ che giấu nhu cầu không bao giờ tạo ra dữ liệu. Giữ các quan sát được nhóm theo tài khoản và phạm vi endpoint; gộp mọi thứ thành một tỷ lệ phần trăm duy nhất có thể che giấu chính xác hạn mức đã giới hạn lần chạy.

Áp Dụng Các Kiểm Soát Này Xung Quanh Scrapeless

Trình lập lịch của bạn vẫn chịu trách nhiệm về phạm vi được ủy quyền và tốc độ của một phiên thu thập sử dụng Scrapeless Web Unlocker. Sản phẩm truy xuất nội dung; ứng dụng của bạn quyết định URL nào là cần thiết, cái gì được tính là đầu ra chấp nhận được và liệu job có nên tiếp tục hay không. Giữ các ràng buộc sử dụng của tài khoản nhà cung cấp tách biệt khỏi các quy tắc truy cập của trang đích và hạn chót báo cáo của riêng bạn.

Sử dụng khả năng yêu cầu Web Unlocker để chọn cách xử lý phản hồi mà nhiệm vụ của bạn cần, sau đó xem lại bảng giá Scrapeless để biết mô hình thanh toán áp dụng. Bài viết này không gán hạn ngạch sản phẩm hay hứa rằng truy cập được quản lý sẽ loại bỏ giới hạn tốc độ. Một gói dịch vụ và ranh giới cấp phép của mục tiêu trả lời các câu hỏi khác nhau và cả hai đều thuộc về thiết kế thu thập.

Một Kế Hoạch Thu Thập Có Thể Xem Xét Được

Một kế hoạch có thể xem xét được mô tả bộ dữ liệu, các nguồn được phép, khung thời gian và các quy tắc dừng trước khi lưu lượng bắt đầu. Bao gồm phạm vi phân trang dự kiến, người dùng chung cùng tài khoản, độ tươi của bộ nhớ đệm, thời hạn hàng đợi và tiêu chí chấp nhận ở cấp bản ghi. Làm cho kế hoạch đủ cụ thể để một kỹ sư khác có thể xác định liệu kết quả có đầy đủ hay không mà không cần đọc phần triển khai bộ thu thập.

Ví dụ, một cuộc kiểm toán danh mục giả định có thể được giới hạn vào một danh mục đã được phê duyệt và một kỳ báo cáo được nêu tên. Quy tắc hoàn thành của nó là trang cuối cùng được ghi trong tài liệu cộng với lưu trữ đã cam kết cho mọi bản ghi được chấp nhận. Các điều kiện dừng của nó bao gồm hết phân bổ, lỗi cấp phép và hết hạn mức độ liên quan của nhiệm vụ. Thiết kế này tạo ra một báo cáo một phần hữu ích khi job không thể hoàn thành, thay vì một tệp có vẻ thành công nhưng không thể giải thích được phạm vi bao phủ.

Kết luận

Lên kế hoạch ngân sách yêu cầu trước khi thu thập dữ liệu, chia sẻ ngân sách đó giữa các worker và đo lường hoàn thành tại ranh giới bộ dữ liệu. Phân trang hiệu quả, quy tắc bộ nhớ đệm, hàng đợi có giới hạn và các trạng thái dừng rõ ràng làm cho việc thu thập dễ vận hành và giải thích hơn. Khi dung lượng không đủ, hãy giảm phạm vi hoặc nhận hạn mức phù hợp trước khi lập lịch công việc tiếp theo.

Xây Dựng Quy Trình Dữ Liệu Web Của Bạn

Sử dụng Web Unlocker để truy xuất nội dung dựa trên URL trong khi ứng dụng của bạn kiểm soát phạm vi, nhịp độ và chấp nhận dữ liệu.

Đăng ký ngay hôm nay và nhận $5 tín dụng miễn phí — không cần thẻ tín dụng.

Nhận $5 Tín Dụng Của Bạn →

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

Giới hạn đồng thời có đủ để tôn trọng giới hạn tốc độ không?

Giới hạn đồng thời không đủ để áp đặt tốc độ yêu cầu. Số lượng yêu cầu mới phụ thuộc vào việc các yêu cầu đang hoạt động hoàn thành nhanh đến mức nào. Hãy dùng một ngân sách tốc độ bắt đầu dùng chung cùng với giới hạn số thao tác đang hoạt động, và bao gồm mọi tiến trình sử dụng cùng một hạn mức tài khoản.

HTTP 429 có luôn tiết lộ đầy đủ chính sách giới hạn không?

HTTP 429 tự nó không tiết lộ đầy đủ chính sách đếm. Nhà cung cấp quyết định danh tính người gọi, điểm cuối và cửa sổ thời gian nào được áp dụng. Hãy đọc chi tiết lỗi được ghi trong tài liệu và chính sách tài khoản, và giữ tập hợp bị ảnh hưởng ở trạng thái chưa hoàn chỉnh khi yêu cầu không được chấp nhận.

Mọi bộ thu thập có nên dùng kích thước trang lớn nhất không?

Kích thước trang được hỗ trợ lớn nhất không phải lúc nào cũng là lựa chọn tốt nhất. Phản hồi lớn hơn có thể yêu cầu nhiều bộ nhớ và thời gian xử lý hơn, và một số nhà cung cấp tính phí theo khối lượng công việc thay vì số lượng yêu cầu. Hãy chọn một kích thước được hỗ trợ sau khi kiểm tra chi phí phản hồi và các ràng buộc lưu trữ của một tác vụ đại diện.

Một proxy hoặc dịch vụ được quản lý có thể loại bỏ các giới hạn quyền truy cập không?

Một proxy hoặc dịch vụ được quản lý không cấp quyền để vượt quá các giới hạn của nguồn. Hãy giữ yêu cầu trong phạm vi điều khoản truy cập áp dụng và phạm vi được ủy quyền. Định tuyến mạng, tính phí dịch vụ và quyền thu thập một tập dữ liệu vẫn là các trách nhiệm riêng biệt.

Một báo cáo chưa hoàn chỉnh do giới hạn tốc độ nên chứa những gì?

Một báo cáo chưa hoàn chỉnh nên nêu rõ phạm vi đã thu thập, phạm vi bị thiếu, lý do dừng và điểm kiểm tra cuối cùng đã được cam kết. Bao gồm thời điểm quan sát và bằng chứng lỗi đã được khử nhạy cảm để người dùng có thể đánh giá mức độ bao phủ và độ mới. Một quá trình thu thập chỉ nên được xem là hoàn chỉnh khi các điều kiện hoàn tất được ghi trong tài liệu riêng của nó được đáp ứng.

Tài liệu tham khảo