我想在我們的REST API上實現一些限制。 A typical approach在阻止請求的某個閾值之後(使用403
或429
響應)。但是,我已經看到one api,它會將延遲添加到響應。耽誤http api調用延遲
當您打電話給API時,我們會查看過去五分鐘內您每秒的平均通話量(c/s)。下面是會發生什麼:
在3C /秒,我們可以添加2秒延遲
爲超過5C /秒,我們增加4秒延遲
在7C/s和我們加5秒延遲
從客戶端的角度來看,我認爲這比又回到一個錯誤要好。可能發生的最糟糕的是你會放慢速度。
我想知道如何實現而不會對應用服務器產生負面影響。即爲了增加這些延遲,服務器需要保持請求開放,使其保持越來越多的請求處理器繁忙,這意味着它具有較少的新請求進入的能力。
什麼是最好的方式來實現這一點?(即是這樣的東西,可以在Web服務器/負載均衡器來完成,這樣應用程序服務器不會受到消極影響?是否有某種可爲此目的而添加節流層?)
我們」重新使用Django/Tastypie,但問題更多的是架構/概念層面。
謝謝!看起來像我一直在尋找的東西(不知道是哪一個,但或者可能會這樣做)。 – gingerlime 2013-05-01 15:30:42
這個'nginx-delay-module'能夠以任何方式從Django獲取指令嗎?例如,如果通過Django視圖識別濫用,我可以指示該插件延遲nginx方面的響應嗎?理想情況下,我想用這個來爲DRF編寫一個自定義的Throttle類。 – dtgq 2016-12-18 11:53:45