Комментарии 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, «разогнанный» до безобразия :)

Лучше везде перевести указанный алгоритм именно как "протекающее ведро". Течь ведро не может, но может протекать. К тому же, "текущее" по умолчанию наводит на значение "конкретное", как текущий элемент в коллекции.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Информация

Дата основания
Местоположение
Россия
Сайт
team.mail.ru
Численность
5 001–10 000 человек
Дата регистрации

Блог на Хабре