Ash*_*adi 1 python django throttling django-rest-framework
我使用 DRF 进行限制,根据文档,我可以为我的速率选择以下选项之一:秒、分钟、小时或天。
但问题是,我想要一个自定义速率,例如每 10 分钟 3 个请求。
DRF 中可以吗?
您应该能够通过扩展SimpleRateThrottle或任何其他扩展类SimpleRateThrottle(UserRateThrottle等)来实现这一点。
看看parse_rate方法SimpleRateThrottle:
它将请求率字符串作为输入并返回两个元组:(允许的请求数,以秒为单位的时间段)
因此,如果您编写一个类来覆盖此解析逻辑,那么您应该可以顺利进行。
例如:
from pytimeparse.timeparse import timeparse
class ExtendedRateThrottle(throttling.UserRateThrottle):
def parse_rate(self, rate):
"""
Given the request rate string, return a two tuple of:
<allowed number of requests>, <period of time in seconds>
"""
if rate is None:
return (None, None)
num, period = rate.split('/')
num_requests = int(num)
duration = timeparse(period)
return (num_requests, duration)
Run Code Online (Sandbox Code Playgroud)
运行此示例并查看3/10m解析为(3, 600)。
现在使用此类作为您的类,DEFAULT_THROTTLE_CLASSES或者您可以使用任何其他限制类。
| 归档时间: |
|
| 查看次数: |
2350 次 |
| 最近记录: |