Почему решения для ограничения скорости Flask используют Redis?

Я хочу ограничить скорость моего Flask API. Я нашел 2 решения.

  1. Расширение Flask-Limiter.
  2. Фрагмент веб-сайта Flask с использованием Redis: http://flask.pocoo.org/snippets/70/

Каково значение Redis, когда Flask-Limiter может ограничивать скорость запроса на основе удаленного адреса без Redis?


person user3787291    schedule 21.06.2016    source источник
comment
Ограничитель фляги предлагает различные типы стратегий. Только простые стратегии работают на основе удаленного адреса без Redis. Для более сложных ограничитель скорости колб также использует Redis (или memcached).   -  person tobltobs    schedule 16.04.2018


Ответы (1)


Redis позволяет сохранять состояние ограничения скорости в постоянном хранилище.

Это означает, что вы можете:

  1. Перезапустите веб-сервер или веб-приложение, и ограничение скорости продолжится. Вы не потеряете записи о последних сделанных запросах из-за уничтожения рабочего процесса и создания нового.
  2. Используйте несколько веб-серверов или веб-приложений. Это связано с тем, что состояние ограничения скорости сохраняется во внешнем хранилище данных, что также решает проблему синхронизации общих данных и гонок данных. Вы можете запускать столько веб-серверов, сколько пожелаете - ограничение скорости распределяется между ними всеми.
  3. Посмотрите на состояние ограничения скорости. Redis предлагает простые инструменты командной строки, которые позволяют вам просматривать текущие активные данные в режиме ad-hoc, даже МОНИТОРИРУЯ входящие команды и запросы.
  4. Разрешите Redis управлять TTL, LRU и т. д. для алгоритмов ограничения скорости. Redis поддерживает это по своей сути.
person advance512    schedule 21.06.2016