Tweepy lookup_user для большого списка user_id

Я хочу получить данные пользователя, используя большой список (более 100 тыс.) Идентификаторов подписчиков из твиттера с библиотекой Tweepy (python 2.7). Ниже мой код:

def lookup_user_list(followers_id, api):
    full_users = []
    users_count = len(followers_id)
    try:
       for i in range((users_count / 100) + 1):
           full_users.extend(api.lookup_users(user_ids=followers_id[i*100:min((i+1)*100, users_count)]))
           print 'getting users batch:', i

    except tweepy.TweepError as e:
          print 'Something went wrong, quitting...', e
          time.sleep(15 * 60)

    return full_users

Аргумент api функции - это настройка и конфигурация аутентификации Tweepy с ключами потребителя, секретом потребителя, токеном доступа и секретом доступа.

Когда я запускаю это так:

results = lookup_user_list(followers_id, api)

После получения пакета пользовательских данных 448 я получаю следующую ошибку:

Something went wrong, quitting... Failed to send request: HTTPSConnectionPool(host='api.twitter.com', port=443): Read timed out. 

Есть ли способ исправить эту ошибку и перебрать полный список идентификаторов, чтобы получить соответствующие данные пользователя?


person T-Jay    schedule 01.08.2017    source источник


Ответы (1)


В случае, если вы столкнетесь с той же проблемой, добавление «While True:» перед попыткой: в моем коде решило эту проблему.

def lookup_user_list(followers_id, api):
    full_users = []
    users_count = len(followers_id)
    while True:
         try:
             for i in range((users_count / 100) + 1):
             full_users.extend(api.lookup_users(user_ids=followers_id[i*100:min((i+1)*100, users_count)]))
             print 'getting users batch:', i
         except tweepy.TweepError as e:
             print 'Something went wrong, quitting...', e
             time.sleep(15 * 60)
         return full_users
person T-Jay    schedule 01.08.2017