【发布时间】:2019-09-22 06:07:56
【问题描述】:
如何在 graphene-django 中限制查询? 是否有任何包可用于 graphene-django 来限制查询。
【问题讨论】:
标签: graphql graphene-python graphene-django
如何在 graphene-django 中限制查询? 是否有任何包可用于 graphene-django 来限制查询。
【问题讨论】:
标签: graphql graphene-python graphene-django
一种选择是在 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-controls/controlling-access-proxied-http/#limit_rate
实现起来非常简单,但是如果您需要基于单个客户使用多个客户端进行节流,这种方法将不起作用。
【讨论】:
另一个选项可能是使用django-throttle-requests,它允许您配置视图级别的限制规则。尤其是graphene-django 可以在您的网址中使用。
另一方面,Django Rest Framework 提供了一个有据可查的 throttling functionalities 集合,在视图级别也很方便。
【讨论】: