python - 清理面向公众的 API 的最佳实践?

标签 python postgresql nginx memcached pyramid

作为我们服务的一部分,我们正在构建公开可用的 API,让用户在我们的平台上执行简单的任务(主要用于自动化目的)(例如评论、关闭已完成的任务和创建新任务)。

API 基于 HTTPS,需要使用您的登录名和密码以调用/login 的形式进行授权才能接收 token (可以在您的个人资料中使该 token 失效)。如果需要的话,我们会使用 Pyramid 、postgresql 和 nginx。

这是我的第一个此类项目,我想知道如何确保这个东西不消耗我们所有的传输或处理能力(其中一些 API 函数非常繁重)。 我想在一个示例的上下文中考虑它,其中有人在他的脚本(使用我们的 API)中犯了小错误,并且它会在同一任务下每秒发布评论(或列出该任务的所有评论)。为期 2 天。

如果我强制通过缓存进行所有读取(例如,接下来的 10 秒有效),那么它将命中我们的 memcached 服务器而不是 postgres 基础 - 是否足以缓解此问题(这样其他用户就不会被受影响)还是只是愚蠢?

如果我检查某种计时器并在进行另一次写入之前等待至少 5 秒(两次写入之间间隔 5 秒) - 可以吗?或者我会通过计时器检查来终止我们的服务器?

我想这更多的是关于清理公共(public) API 的最佳实践的问题,这样它就不会伤害它的创建者。你是怎么做到的?

最佳答案

您正在寻找的是 rate limiting 。如果不了解您的 API 的编写方式,我无法为您提供有关如何实现它的具体建议,但您最好的选择是对 API 使用者进行速率限制,以便他们不会对您服务的其他用户产生不利影响。

关于python - 清理面向公众的 API 的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14988762/

相关文章:

python - 条形图中的垂直线

python - Tkinter 框架将自身添加到主窗口

ruby-on-rails - Heroku、Rails:PG::SyntaxError

node.js - 无法从带有 SSL 的域通过 POST 来表达服务器

python - 我如何在 Python 中交错字符串?

python - 为什么从 Python 运行 PowerShell 脚本似乎有延迟?

java - Flyway:clean 不清理多个模式

sql - 在 Case 语句中进行类型转换

nginx - Docker Nginx 停止 : [emerg] 1#1: host not found in upstream

ssl - 通过 Nginx Ingress Controller 和证书管理器启用 SSL 后,TTFB 增加了 200 多毫秒