2010-06-06 157 views

回答

3

您可以使用自定義中間件來做到這一點。你需要將數據保存在某個地方(db?)。請參閱文檔以瞭解如何編寫您的own middleware。以下是您在request object中可以獲得的內容。

雖然,我建議在apache/nginx /無論你使用什麼。

+1

特別是對於你的情況,如果你想限制POSTs並且不能使用Apache/nginx規則來實現,請試試這個:http://djangosnippets.org/snippets/2017/ – 2010-06-06 08:44:22

2

看看Simon Willison的ratelimitcache。就像名稱所暗示的那樣,它使用Django的緩存框架來存儲限速器的狀態。還有一個blog post,詳細介紹了速率限制器的工作原理。

+0

我知道這是舊的,但是,這是否支持服務器自動縮放?像這樣堅持到所有的服務器實例? – rrw 2016-03-01 07:32:42

+1

@richmondwang取決於您的緩存後端是否在所有機器之間共享。如果您在每臺計算機上使用本地memcache,則速率限制將爲每臺計算機,但如果使用共享redis羣集作爲高速緩存,則速率限制也將被共享。 但是,我強烈推薦使用更新和更新的解決方案,例如https://django-ratelimit.readthedocs.org/en/latest/ – 2016-03-01 20:23:15

相關問題