Как использовать троттлинг в графене-джанго?

Как я могу задушить запросы в графене-джанго? Есть ли какой-нибудь пакет, который можно использовать в графене-джанго для регулирования запросов.

1 ответ

Одним из вариантов является регулирование запросов на веб-сервере и исключение из них django и графена. Например, если вы используете nginx и uwsgi, и ваша конечная точка графена /api Вы можете добавить это в вашу конфигурацию nginx:

location = /api/ {
    limit_rate_after 500k;
    limit_rate 50k;
    uwsgi_pass  django;
    include     /path/to/uwsgi_params;
}

какие дроссельные запросы больше чем 500k. Nginx имеет другие параметры конфигурации для ограничения в зависимости от клиента - см. https://www.nginx.com/blog/rate-limiting-nginx/ и https://docs.nginx.com/nginx/admin-guide/security-. управления / контроля доступа-проксированном-HTTP /#limit_rate

Очень прост в реализации, но если вам нужно регулировать на основе одного клиента с использованием нескольких клиентов, этот подход не будет работать.

Другой вариант - использовать https://github.com/sobotklp/django-throttle-requests, который позволяет настраивать правила регулирования на уровне представления. Особенно вgraphene-django можно использовать в ваших URL.

С другой стороны, Django Rest Framework предлагает хорошо документированный набор функций регулирования, которые могут быть полезны также на уровне представления.

Другие вопросы по тегам