随着时间的推移,对于大量的请求,扩展有限的API请求



我正在使用我一直在工作的web应用程序实现Klout API。

Klout允许你每秒处理10个请求,每天处理10000个请求。

每个用户帐户可以查看N个其他用户帐户及其Klout评分。

收集这些信息的最好方法是定期从Klout API请求分数作为后台进程,并将这些结果存储在数据库中吗?

如果我这样做,假设我们有10个用户,他们有30个其他用户的Klout分数想要查看。

在日常后台进程中,假设我们遍历了10个用户,并查找了他们30个关注用户的Klout分数。

这将在整个过程中ping Klout的API最多300次(但是您可以包含多达5个用户来查看每个请求的分数-因此请求数量可以减少到60)。

为了避免每秒10个请求的上限,我是否应该在每个请求之间让进程休眠大约10秒?这是避免API错误的最好方法吗?


推出

伪例子:

$maxUserPerRequest = 5;
foreach ($users as $user){
    $follows = getKloutFollows($user); // list of klout scores to look up per user
    $minimize = 0; // allow to minimize total requests by 5 users per req.
    $batch = array() // array of 5 users to request
    foreach($follows as $follow){
       $batch[] = $follow;
       // query 5 users at a time
       if ($maxUserPerRequest % $minimize==0){
            $kloutAPI->getScore($batch); // storing results
            $batch = array();
            sleep(10); // avoid overloading API requests
       }
       $minimize++;
    }
}

这应该足以避免得到错误,但做大量的数据库追加和存储数据超过5天仍然会违反服务条款。

我只保留每个请求的计数器。提出10个请求。睡1000分钟。重置计数器。提出10个请求。

相关内容

  • 没有找到相关文章

最新更新