Как программно ограничить скорость загрузки на сервер с помощью Scala и Play - PullRequest
4 голосов
/ 18 октября 2011

Все.

Я работаю над проектом с Play Framework и Scala.Мне нужна возможность ограничить скорость загрузки с моего сервера, но точное ограничение зависит от пользователя, поэтому я не могу просто использовать «limit_rate» на моем внешнем сервере nginx.Любая идея или направление для поиска приветствуются.

1 Ответ

6 голосов
/ 18 октября 2011

Из того, что я вижу, я ничего не вижу из коробки, которая будет делать то, что вы ищете.

Итак, я бы подошел к этому, взяв вашу собственную версию Play и изменив исходный код так, чтобы

  • Объект HTTP Response содержит поле предельной скорости загрузки, которое можно установить, когда вы хотите ограничить это значение
  • Измените класс PlayHandler (возможно, writeChunk), который отвечает за запись ответа обратно в браузер, чтобы он устанавливал некоторый уровень приостановки каждую секунду, чтобы обеспечить вывод только на требуемая ставка.

Возможно, на уровне Netty может быть более подходящее решение, но я бросил быстрый взгляд и ничего не смог найти. Однако я не эксперт Netty, поэтому, возможно, вам стоит взглянуть сюда самим.

Альтернативным методом будет реализация вашего собственного метода Render, который расширяет метод RenderBinary, но это ограничивает вас только загрузками файлов, поэтому может не подходить повсеместно, но потребует меньше кодирования для конкретного сценария и может быть выполнено без необходимости изменять какой-либо основной игровой код. Пример пользовательского метода Render можно найти в модуле PDF Николаса Леру

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...