2010-03-07 41 views
10

Đang cố gắng tìm Google cho một plugin Rails cho phép điều chỉnh lượng yêu cầu mà một tài nguyên cụ thể được sử dụng. Django's Piston có một số mã nguồn mở cho việc này. Có một cái gì đó có sẵn ra khỏi hộp cho Rails hoặc là nó an toàn để giả định rằng nhìn vào cách Piston hiện nó và porting nó như là một plugin Rails là cái gì mà có thể được làm việc trên?Yêu cầu điều chỉnh API Ruby on Rails

Trả lời

1

Có một SO thread here về lý do tại sao bạn có thể muốn đánh giá giới hạn bên ngoài ứng dụng của bạn. Thức ăn cho sự suy nghĩ, ít nhất. Tôi đang tìm giải pháp này bản thân mình, và sáng lên trong không khí cho dù tôi muốn làm điều đó trong lớp ứng dụng.

2

Rack::Defense là phần mềm trung gian giá để yêu cầu điều chỉnh và lọc. Nó rất dễ dàng để thiết lập, có một dấu chân nhỏ và chỉ có hai phụ thuộc (rack và redis). Bạn có thể lọc trên hầu như bất kỳ tiêu chí: ip, api thẻ, tên người dùng, vv

Dưới đây là một ví dụ làm thế nào bạn sẽ tăng tốc yêu cầu POST cho con đường /login với tốc độ tối đa là 20 yêu cầu mỗi phút mỗi IP:

Rack::Defense.setup do |config| 
    config.throttle('login', 20, 60 * 1000) do |req| 
    req.ip if req.path == '/login' && req.post? 
    end 
end 

một ví dụ khác về cách tăng tốc yêu cầu GET cho con đường /api/* với tốc độ tối đa là 50 yêu cầu mỗi giây mỗi mã thông báo API:

Rack::Defense.setup do |config| 
    config.throttle('api', 50, 1000) do |req| 
    req.env['HTTP_AUTHORIZATION'] if %r{^/api/} =~ req.path 
    end 
end 

Disclamer: tôi rack :: Defense gem duy trì.

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