Комментарии 3
Между прочим, у Nginx есть встроенный лимитер запросов https://nginx.org/ru/docs/http/ngx_http_limit_req_module.html
Когда-то писал троттлинг вызовов на Python
import time
def rate_throttle(key, rate, d={}):
current = time.monotonic()
last = d.get(key, 0)
elapsed = current - last
sleep = 0
if rate > elapsed > 0:
sleep = rate - elapsed
d[key] = current + sleep
return sleep
for i in range(5):
# No more 5 requests per 1 second
time.sleep(rate_throttle('', 1/5))
print('Faster', i)
for i in range(5):
# No more 1 request per 2 second
time.sleep(rate_throttle('', 2/1))
print('Slower', i)
Спасибо за статью. У соседей-функциональщиков уже есть GenStage, «разогнанный» до безобразия :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Рейт лимиты с помощью Python и Redis