Poszukuję silnika z ograniczeniem prędkości dla mojej aplikacji rails 3. Znalazłem trochę, ale to nie jest to, czego potrzebuję. Znalazłem klejnot do szafy i klejnot. Wygląda na to, że tryb "rack-throttle" działa dla każdego żądania aplikacji rails, ale muszę ograniczyć żądania tylko do jednej akcji. Curbit został ostatnio zaktualizowany dwa lata temu. Czy ktoś może mi powiedzieć o innych silnikach ograniczających szybkość, z których mogę korzystać? Zauważ, że powinien działać z buforowaniem.Ograniczanie tempa dla kontrolerów szyn
Odpowiedz
No, wreszcie rack przepustnica jest dobrym rozwiązaniem.
Można zrobić to w następujący sposób. Musisz zdefiniować własny ogranicznik. Może ona być oparta na jednym z następujących ograniczników
Rack::Throttle::Limiter
Rack::Throttle::Interval
Rack::Throttle::Hourly
Rack::Throttle::Daily
wszystko trzeba zrobić, to wynika z jednej z powyższych klas zdefiniować niestandardową logikę. Na przykład:
class CustomLimiter < Rack::Throttle::Interval
def allowed?(request)
#custom logic here
end
end
Należy umieścić ten plik w ścieżce RAILS_ROOT/lib
. Następnie w pliku application.rb
należy określić klasę, która ma być używana jako ogranicznik. Na przykład, jeśli chcesz zastosować ogranicznik tylko do jednego działania można zrobić to w następujący sposób:
#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
może trzeba wziąć this pod uwagę
nadzieję, że ta będzie przydatna
UPD :
może chcesz sprawdzić inne rozwiązanie: rack-attack
zły kod! zmienić config.require "custom_failure"
–
CelinHC
stałe. Wszystko wydaje się być ok teraz – RomanKapitonov
Dzięki za krokiem krok po. Wystarczy wiedzieć nieco więcej o konfiguracji. Czy korzystasz z jakiego rodzaju DB przechowywać liczniki? – Eduardo
rack-throttle
robi to, co chcesz. Podklasa Limiter
i określ własną metodę #allowed?
. Po prostu zwróć true, jeśli żądanie nie jest akcją, której potrzebujesz, i nie licz do limitu. Spójrz na daily.rb
. Zmień definicję #cache_set
, aby nie zapisywać tych, które nie pasują do trasy, którą chcesz ograniczyć.
Mam overrided go i umieścić plik w katalogu lib i ponownym uruchomieniu serwera, ale to nie działa. 'class CustomLimiter
- 1. Ograniczanie konkretnych pól w odpowiedzi szyn kontrolera
- 2. Ograniczanie szyn tylko do odpowiedzi na żądania JSON i XML
- 3. Ograniczanie prędkości sieci dla WebSockets
- 4. Ograniczanie wartości dla curve_fit (scipy.optimize)
- 5. Ograniczanie czasu dla funkcji wieloprocesowej
- 6. Jedna fabryka dla wielu kontrolerów?
- 7. Hak zamykający dla szyn
- 8. Turbolinks dla szyn nieaktywnych
- 9. Lightbox dla szyn?
- 10. Środowiskowe inicjatory dla szyn?
- 11. Gdzie umieścić metody pomocnicze Ruby dla kontrolerów Rails?
- 12. Ograniczanie adresów IP dla Jetty i Solr
- 13. implementacja komunikatora internetowego dla szyn?
- 14. Zalecana wtyczka uwierzytelniania dla szyn
- 15. „Like”, „Niechęć” plugin dla szyn
- 16. Architektura wtyczek dla szyn cms
- 17. Testowanie zakresów szyn dla zer
- 18. Jak wygenerować specyfikacje dla istniejących kontrolerów?
- 19. Wywołanie before_filter tylko dla określonych kontrolerów
- 20. Waliduj ModelState.IsValid globalnie dla wszystkich kontrolerów
- 21. Konfiguracja limit czasu żądania dla kontrolerów WebAPI
- 22. Dostęp do kontrolerów z innych kontrolerów
- 23. Model szyn "before_filter"?
- 24. Ograniczanie aktualizacji javafx gui
- 25. Seler (Django) Ograniczanie liczby
- 26. Ograniczanie liczby rozproszonych
- 27. Ograniczanie widoczności pliku SWF
- 28. Funkcja mieszania szyn na żądanie?
- 29. idiom szyn dla .present? i jakikolwiek?
- 30. Shoulda vs Remarkable dla rspec i szyn
co dławienie na serwerze WWW (Apache?) – Roger
@Rogier projekt zostanie wdrożony na Heroku – RomanKapitonov