假设我有一个API调用,我想对其进行速率限制。类似的东西:
1 def rate_limited_function(request):
2
3 if not request.POST.get('user_id'):
4 return BadResponse
5 else:
6
7 # do function
费率计数器通常在哪里实施 - 第2行,功能开始时或第6行?为什么一个在另一个上实施会更好?
答案 0 :(得分:1)
我个人建议限制调用生成HTTP请求的函数的速率。例如:
def run(something):
if somecondition:
sleep x
rate_limited_function(user_id)
def rate_limited_function(user_id)
#work happening here
我这样做的原因是因为这样你可以使函数执行多线程工作而不会导致线程等待。此外,任何其他更高级别的功能都不会等待HTTP执行。此外,如果您正在使用计数器在工作级别执行此操作,则可能很难跟踪。