Как искать страницы по имени в Facebook Graph API с наименьшим количеством вызовов с использованием Python? - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть список имен футбольных команд my_team_list = ['Bayern Munich', 'Chelsea FC', 'Manchester United', ...] и я пытаюсь найти их официальную страницу в Facebook, чтобы получить их fan_count с помощью Python facebook-api.Пока это мой код:

club_list = []

for team in my_team_list:
    data = graph.request('/pages/search?q=' + team[0])

    for i in data['data']:
        likes = graph.get_object(id=i['id'], fields='id,name,fan_count,is_verified')
        if likes['is_verified'] is True:
            club_list.append([team[0],likes['name'],likes['fan_count'],likes['id']])

Однако, поскольку в моем списке более 3000 клубов, с этим кодом я получу следующую ошибку ограничения скорости:

GraphAPIError: (#4) Application request limit reached

Как я могу уменьшить количество звонков, чтобы получить более одной страницы клуба за звонок (например, групповые звонки?)

1 Ответ

0 голосов
/ 08 февраля 2019

Как говорится в комментарии к OP, пакетная обработка не спасет вас.Вам необходимо активно следить за ограничением скорости:

"Все ответы на вызовы, сделанные в API Graph, включают HTTP-заголовок X-App-Usage. Этот заголовок содержит текущий процент использования вашего приложения. Этот процентравно использованию, показанному вам на графиках ограничения скорости. Используйте это число для динамического баланса нагрузки вызовов, чтобы избежать удушения. "https://developers.facebook.com/docs/graph-api/advanced/rate-limiting#application-level-rate-limiting

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

...