gpt4 book ai didi

django - 延迟限制http api调用

转载 作者:行者123 更新时间:2023-12-04 15:35:11 24 4
gpt4 key购买 nike

我正在尝试对我们的 REST API 实现一些限制。 typical approach在某个阈值之后阻止请求(使用 403429 响应)。然而,我见过one api添加一个 响应延迟 反而。

As you make calls to the API, we will be looking at your average calls per second (c/s) over the previous five-minute period. Here's what will happen:

  • over 3c/s and we add a 2 second delay

  • over 5c/s and we add a 4 second delay

  • over 7c/s and we add a 5 second delay


从客户的角度来看,我认为这比返回错误要好。最糟糕的情况是你会放慢速度。
我想知道如何实现这一点 不会对应用服务器产生负面影响 .即为了增加这些延迟,服务器需要保持请求打开,导致越来越多的请求处理器忙碌,这意味着它对传入的新请求的容量较小。
实现这一目标的最佳方法是什么? (即,这是否可以在 Web 服务器/负载平衡器上完成,以便应用程序服务器不会受到负面影响?是否可以为此添加某种限制层?)
我们正在使用 Django/Tastypie,但问题更多是在架构/概念层面。

最佳答案

如果您正在使用同步应用程序服务器,这是 Django 应用程序最常见的设置(例如默认为 --worker-class sync 的 gunicorn),那么在应用程序中添加这样的延迟确实会对性能产生非常不利的影响。处理延迟请求的工作人员将在延迟期间被阻塞。

但是您可以使用异步应用程序服务器(例如带有“--worker-class gevent”的gunicorn),然后开销应该可以忽略不计。处理延迟请求的工作人员能够在延迟进行时处理其他请求。

在反向代理服务器中执行此操作可能是更好的选择,因为它允许轻松灵活地调整策略。有an external nginx module for exactly such thing .

关于django - 延迟限制http api调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15131671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com