【问题标题】:How to use throttling in graphene-django?如何在graphene-django中使用节流?
【发布时间】:2019-09-22 06:07:56
【问题描述】:

如何在 graphene-django 中限制查询? 是否有任何包可用于 graphene-django 来限制查询。

【问题讨论】:

标签: graphql graphene-python graphene-django


【解决方案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-controls/controlling-access-proxied-http/#limit_rate

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

【讨论】:

  • 我想在突变上添加节流阀。
  • 如果一个突变被调用超过 2 到 3 次,如果它们属于同一个 IP 地址,想要禁用它们。
【解决方案2】:

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

另一方面,Django Rest Framework 提供了一个有据可查的 throttling functionalities 集合,在视图级别也很方便。

【讨论】:

    猜你喜欢
    • 2021-02-07
    • 2018-03-31
    • 2017-11-11
    • 2018-10-29
    • 2021-11-09
    • 2017-03-15
    • 2021-01-21
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多