Tôi đang tìm kiếm công cụ giới hạn tốc độ cho ứng dụng đường ray 3 của tôi. Tôi đã tìm thấy một số nhưng đó không phải là những gì tôi cần. Tôi đã tìm thấy đá quý rack-throttle và đá quý curbit. Có vẻ như rack-throttle hoạt động cho mỗi yêu cầu để gửi ứng dụng nhưng tôi cần giới hạn các yêu cầu chỉ cho một hành động. Curbit được cập nhật lần cuối hai năm trước. Bất cứ ai có thể cho tôi biết về bất kỳ động cơ hạn chế tốc độ khác mà tôi có thể sử dụng? Lưu ý rằng nó sẽ làm việc với bộ nhớ đệm.Tỷ lệ giới hạn cho bộ điều khiển đường ray
Trả lời
Vâng, cuối cùng giá ga là một giải pháp tốt.
Bạn có thể thực hiện theo cách sau. Bạn cần xác định giới hạn tùy chỉnh của mình. Có thể dựa trên một trong các giới hạn sau đây
Rack::Throttle::Limiter
Rack::Throttle::Interval
Rack::Throttle::Hourly
Rack::Throttle::Daily
Mọi thứ bạn cần làm là lấy từ một trong các lớp ở trên để xác định logic tùy chỉnh. Ví dụ:
class CustomLimiter < Rack::Throttle::Interval
def allowed?(request)
#custom logic here
end
end
Bạn nên đặt tệp này trong đường dẫn RAILS_ROOT/lib
. Sau đó, trong tệp application.rb
bạn nên chỉ định lớp nào sẽ sử dụng làm giới hạn. Ví dụ, nếu bạn muốn áp dụng giới hạn chỉ với một hành động mà bạn có thể làm điều đó theo cách sau:
#lib/custom_limiter.rb
class CustomLimiter < Rack::Throttle::Interval
def allowed?(request)
path_info = Rails.application.routes.recognize_path request.url rescue {}
if path_info[:controller] == "application" and path_info[:action] == "check_answer"
super
else
true
end
end
end
#config/application.rb
class Application < Rails::Application
...
#Set up rate limiting
config.require "custom_limiter"
config.middleware.use CustomLimiter, :min => 0.2
...
end
Bạn có thể cần phải thực hiện this xem xét
Hy vọng điều này sẽ hữu ích
UPD :
bạn có thể muốn xem giải pháp khác: rack-attack
mã sai! Thay đổi thành config.require "custom_failure"
–
CelinHC
cố định. Mọi thứ có vẻ ổn ngay bây giờ – RomanKapitonov
Cảm ơn bạn đã từng bước.Chỉ cần biết thêm một chút về thiết lập Bạn có đang sử dụng loại DB nào để lưu trữ bộ đếm không? – Eduardo
rack-throttle
thực hiện những gì bạn muốn. Phân lớp Limiter
và xác định phương thức #allowed?
của riêng bạn. Chỉ cần trả về true nếu yêu cầu không phải là hành động bạn muốn giới hạn và không tính đến giới hạn. Hãy xem daily.rb
. Xác định lại #cache_set
để nó không lưu những quảng cáo không khớp với tuyến đường bạn muốn giới hạn.
Tôi đã ghi đè nó, và đặt các tập tin trong thư mục lib và khởi động lại máy chủ nhưng nó không hoạt động. 'class CustomLimiter
- 1. tỷ lệ giới hạn cuộc gọi hàm trong đường ray cho mỗi người dùng
- 2. Giới hạn tỷ lệ trên Facebook API
- 3. Ngoại lệ: Lỗi hạn ngạch: Giới hạn tỷ lệ người dùng đã vượt quá
- 4. Mysql - GIỚI HẠN theo Tỷ lệ phần trăm?
- 5. Google URL Shortener 403 Giới hạn tỷ lệ vượt quá
- 6. Đường ray tạo ra Bộ điều khiển Phiên
- 7. Bố cục đường ray trên mỗi bộ điều khiển
- 8. xem đường ray mà không cần bộ điều khiển
- 9. Khi nào tạo bộ điều khiển mới trong đường ray
- 10. Đường ray 3 URL không có tên bộ điều khiển
- 11. Catch tất cả các trường hợp ngoại lệ trong một bộ điều khiển đường ray
- 12. Codeigniter 2 hạn chế bộ điều khiển cho dòng lệnh
- 13. Tải lại bảng điều khiển đường ray
- 14. Điều khiển thoát khỏi đường ray sau khi hiển thị
- 15. Đường dẫn tài sản truy cập từ Bộ điều khiển đường ray
- 16. Cấu hình hành động của trình điều khiển đường ray
- 17. Gửi email từ bảng điều khiển đường ray
- 18. Đường ray: Bộ điều khiển Skinny so với Mô hình chất béo, hoặc tôi có nên làm cho Bộ điều khiển của tôi bị Anorexic không?
- 19. Đường ray: Hướng đến hành động điều khiển tùy chỉnh
- 20. Chạy di chuyển từ bảng điều khiển đường ray
- 21. Một bộ điều khiển cho nhiều tuyến đường
- 22. Điều chỉnh yêu cầu POST trong ứng dụng đường ray
- 23. Thay đổi kích thước hình ảnh theo tỷ lệ với giới hạn MaxHeight và MaxWidth
- 24. Bàn cắt ngắn với bảng điều khiển đường ray
- 25. bảng điều khiển đường ray - chạy một khối mã
- 26. giao diện điều khiển đường ray với wirble?
- 27. phương thức không xác định `devise_for 'trong bộ điều khiển hành động đường ray
- 28. Không tạo thư mục xem trên đường ray tạo bộ điều khiển
- 29. cách xử lý ActiveRecord :: RecordNotFound trong bộ điều khiển đường ray?
- 30. Cách đổi tên bộ điều khiển và mô hình đường ray trong một dự án
những gì về throttling trên máy chủ web (apache?) – Roger
@Rogier dự án sẽ được triển khai trên heroku – RomanKapitonov