1

如何限制 graphene-django 中的查询?有没有可以在 graphene-django 中使用来限制查询的包。

4

2 回答 2

1

一种选择是在 Web 服务器上进行查询限制,并将 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

实现起来非常简单,但是如果您需要基于使用多个客户端的单个客户进行节流,这种方法将不起作用。

于 2019-05-06T18:54:02.493 回答
0

另一种选择可能是使用django-throttle-requests,它允许您配置视图级限制规则。特别是graphene-django可以在您的 URL 中使用。

另一方面,Django Rest Framework 提供了一组有据可查的节流功能,这些功能在视图级别也很方便。

于 2020-06-21T21:37:48.810 回答