Как использовать троттлинг в графене-джанго?
Как я могу задушить запросы в графене-джанго? Есть ли какой-нибудь пакет, который можно использовать в графене-джанго для регулирования запросов.
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 предлагает хорошо документированный набор функций регулирования, которые могут быть полезны также на уровне представления.