Tratando de buscar un plugin de Rails que permita estrangular la cantidad de solicitudes que consume un recurso en particular. Piston de Django tiene algún código fuente abierto para esto. ¿Hay algo disponible de fábrica para Rails o es seguro asumir que mirar cómo lo hace Piston y portarlo como un plugin de Rails es algo en lo que se puede trabajar?Solicitudes de limitación a Ruby on Rails API
Respuesta
He aquí algunos middleware cremallera que lleva a cabo lo que está buscando: http://github.com/dambalah/api-throttling
y aquí hay un post sobre el desarrollo de esa middleware: http://blog.messagepub.com/2009/05/05/how-to-rack-middleware-for-api-throttling/
Hay un SO thread here acerca de por qué es posible que desee limitar la velocidad fuera de tu aplicación. Alimento para el pensamiento, al menos. Estoy buscando esta solución yo mismo, y estoy en el aire si quiero hacerlo en la capa de aplicación.
Rack::Defense es un middleware de rack para ralentizar y filtrar solicitudes. Es fácil de configurar, tiene una huella pequeña y solo tiene dos dependencias (rack y redis). Puedes realizar un filtrado sobre prácticamente cualquier criterio: ip, token de API, nombre de usuario, etc.
Aquí es un ejemplo cómo se estrangular las peticiones POST relativos a la trayectoria /login
con una tasa máxima de 20 por minuto y por solicitud de IP:
Rack::Defense.setup do |config|
config.throttle('login', 20, 60 * 1000) do |req|
req.ip if req.path == '/login' && req.post?
end
end
Otro ejemplo de cómo estrangular peticiones GET relativos a la trayectoria /api/*
con una tasa máxima de 50 por segundo por petición token de 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: soy el bastidor :: Defensa gem mantenedor.
- 1. Ruby on Rails API Tutorial
- 2. ¿Ruby on Rails maneja solicitudes simultáneas?
- 3. Usando Photobucket api con Ruby on Rails
- 4. Perfilando una aplicación ruby / ruby on rails
- 5. Bloqueo de IO/Ruby on Rails
- 6. Ruby vs. Ruby on Rails
- 7. Ruby on Rails, form_remote_tag y API de Google Maps
- 8. Ruby on Rails enviar
- 9. Ruby on Rails will_paginate
- 10. Docsplit Ruby on Rails
- 11. Ruby on Rails Switch
- 12. Ruby on Rails: descargable
- 13. Cómo dominar Ruby on Rails
- 14. Usos de Ruby on Rails
- 15. upsert a granel con Ruby on Rails
- 16. Ruby on Rails: Módulos frente a clases
- 17. link_to con Ruby on Rails
- 18. Ruby on Rails versus Python
- 19. Ruby on Rails Generar vistas
- 20. Ruby on Rails redirect_to arguments
- 21. Ruby on Rails Rake Error
- 22. Ruby on Rails ActiveRecord: pluralization
- 23. SSL con Ruby on Rails
- 24. Ruby on Rails I18n interpolation
- 25. Ruby on Rails: Hello World
- 26. Ruby on Rails: formulario select
- 27. Ruby on Rails asociación polimórfica
- 28. Ruby on Rails. Rutas Unicode
- 29. Ruby on Rails config.secret_token error
- 30. Busting Ruby on Rails Myths