我正在爲我的軌道3應用程序搜索限速引擎。我發現了一些,但那不是我需要的。我找到了機架節流寶石和寶石。看起來,機架節流閥適用於每個請求導軌應用程序,但我需要限制請求只有一個動作。 Curbit是兩年前更新的。任何人都可以告訴我關於我可以使用的任何其他限速引擎嗎?請注意,它應該與緩存一起工作。軌道控制器的速率限制
回答
那麼,最後機架油門是一個很好的解決方案。
您可以通過以下方式進行操作。您需要定義您的自定義限制器。它可以根據以下兩種限制器,你需要做的是從上面的一個類派生定義自定義邏輯
Rack::Throttle::Limiter
Rack::Throttle::Interval
Rack::Throttle::Hourly
Rack::Throttle::Daily
一切的。例如:
class CustomLimiter < Rack::Throttle::Interval
def allowed?(request)
#custom logic here
end
end
您應該將此文件放在RAILS_ROOT/lib
路徑中。然後在application.rb
文件中,您應該指定要用作限制器的類。例如,如果你想申請限制器只有一個動作,你能做到這一點的方式如下:
#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
您可能需要採取this考慮
希望這將是有用的
UPD :
你可能想看看另一種解決方案:rack-attack
錯誤的代碼!更改爲config.require "custom_failure"
–
CelinHC
2012-03-29 15:08:38
固定。一切似乎現在好了 – RomanKapitonov 2012-04-03 14:55:09
感謝您的一步一步瞭解更多關於安裝。您是否使用什麼樣的數據庫來存儲計數器? – Eduardo 2014-01-02 11:12:46
rack-throttle
做你想要的。子類Limiter
並定義您自己的#allowed?
方法。如果請求不是您想要限制的操作,並且不計入限制,請簡單地返回true。看看daily.rb
。重新定義#cache_set
,因此它不會保存那些與您想要限制的路由不匹配的路由。
我已經覆蓋它,並將文件放在lib目錄並重新啓動服務器,但它不起作用。 'class CustomLimiter
- 1. Twitter的速率限制和cron緩存與軌道
- 2. 錢軌道:控制器
- 3. 速率限制算法限制請求
- 4. 速率限制如何限制API
- 5. Dailymotion API的速率限制
- 6. Twitter的速率限制?
- 7. Twitter的速率限制
- 8. Pinterest的API速率限制
- 9. Nginx:動態速率限制
- 10. 速率限制註冊API
- 11. java速率限制邏輯
- 12. 超出速率限制
- 13. OkHttp API速率限制
- 14. Soundcloud和api速率限制
- 15. Flask無Redis速率限制
- 16. Twitter API速率限制
- 17. 併發與速率限制
- 18. Ggmap「dsk」速率限制
- 19. 擺動速率限制
- 20. 軌道 - 乾涸的控制器操作
- 21. 控制修改時回調的速率限制
- 22. 軌道3限制訪問
- 23. 軌道界定控制器作爲根控制器
- 24. 軌道控制器實例變量
- 25. 呼叫控制器在軌道3
- 26. ajax控制在軌道上
- 27. openshift軌道控制檯
- 28. three.js軌道控制與raycaster
- 29. 軌道控制檯與wirble?
- 30. 如何通過不同的軌道控制器持久參數控制器在軌道中的操作
如何在網絡服務器(apache?)扼殺 – Roger 2012-03-06 09:54:07
@Rogier 該項目將部署在heroku – RomanKapitonov 2012-03-06 10:02:24