2014-11-21 23 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