消毒公众面临的API的最佳做法?

时间:2013-02-20 19:55:53

标签: python postgresql nginx memcached pyramid

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

API是基于HTTPS的,需要使用您的登录名和密码以呼叫/登录的形式授权才能接收令牌(可以在您的个人资料中取消验证)。如果重要的话,我们使用金字塔,postgresql和nginx。

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

如果我强制所有读取通过缓存(例如,有效,例如,接下来的10秒),那么它将击中我们的memcached服务器而不是postgres base - 这是否足以卸载此问题(因此其他用户不会受影响)还是只是傻乎乎的?

如果我要检查某种计时器并等待至少5秒再进行另一次写入(写入之间5秒) - 它会没问题,或者我会用计时器检查来杀死我们的服务器?

我想这更像是一个关于清理公共API的最佳实践的问题,所以它不会咬它的创建者。你是怎么做到的?

1 个答案:

答案 0 :(得分:2)

您正在寻找的是rate limiting。如果没有关于如何编写API的更多知识,我无法就如何实现它给出具体的建议,但最好的办法是对API使用者进行评级,以免他们对您服务的其他用户产生负面影响。 / p>