2014-11-21 40 views
0

假设我有一个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行?为什么它会比另一个更好?

回答

1

我个人建议限制产生HTTP请求的函数被调用的速率。例如:

def run(something): 
    if somecondition: 
     sleep x 
     rate_limited_function(user_id) 

def rate_limited_function(user_id) 
    #work happening here 

我这样做的原因是因为这样可以使函数执行多线程工作而不会导致线程等待。另外,任何其他更高级别的函数都不会等待HTTP执行。此外,如果您正在使用柜台在工作层面进行操作,可能很难追踪。

+0

谢谢,在上面的例子中,'sleep x'是什么? – David542 2014-11-21 19:53:11

+0

把它扔进上下文..没有什么特别的,但如果你想在请求开始前等待数秒,然后再执行它,你可以这样做。偶尔会出现。 – 2014-11-22 19:19:25