我想在我们的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