如何在石墨烯-Django中使用节流?

时间:2019-05-03 16:48:39

标签: graphql graphene-python graphene-django

如何在graphene-django中限制查询? 是否可以在graphene-django中使用任何程序包来限制查询。

2 个答案:

答案 0 :(得分:0)

一种选择是在Web服务器上进行查询限制,并保留django和graphene。例如,如果您使用的是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

实施起来非常简单,但是如果您需要基于使用多个客户的单个客户进行限制,则此方法将行不通。

答案 1 :(得分:0)

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

另一方面,Django Rest Framework提供了一个throttling functionalities的文档齐全的集合,在视图级别也很方便。