Масштабирование ограниченных запросов API со временем для больших пакетов запросов - PullRequest
0 голосов
/ 27 сентября 2011

Я внедряю Klout API с веб-приложением, с которым я работал.

Klout позволяет выполнять 10 запросов в секунду и 10 000 в день.

Каждая учетная запись пользователя может просматриватьN других учетных записей пользователей с их оценками Klout.

Будет ли лучшим способом сбора этой информации периодический запрос оценок из API Klout в качестве фонового процесса и сохранение этих результатов в базе данных?

ЕслиЯ делаю это, скажем, у нас есть 10 пользователей, у которых есть 30 других пользователей, которые хотят просмотреть оценки Klout.

В ежедневном фоновом процессе, скажем, мы проходим через каждого из 10 пользователей и ищем каждого изих 30 баллов Klout для отслеживаемых пользователей.

Это будет проверять API Klout не более 300 раз на протяжении всего этого процесса (однако вы можете включить до 5 пользователей для просмотра их баллов за запрос - таким образом, число запросовможет быть уменьшен до 60).

Чтобы избежать 10 запросов в секунду, я должен приостановить процесс примерно на 10 секунд bмежду каждым запросом?Это лучший способ избежать ошибок API?


Пример Psuedo:

$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++;
    }
}

1 Ответ

1 голос
/ 27 сентября 2011

Этого должно быть достаточно, чтобы избежать ошибок, но массовое добавление в базу данных и хранение данных в течение более 5 дней все равно будет нарушать Условия предоставления услуг .

Я бы просто вел счетчик каждого запроса.Сделайте 10 запросов.Спите за 1000. Сбросьте счетчик.Сделайте 10 запросов.Спи за 1000.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...