2014-08-01 7 views
-1

Добрый день, друзья! Скажите, пожалуйста, у меня есть следующий код:Повторение соединений в петле python

all_users = UserProfile.objects.all() 
for s,usera in enumerate(all_users): 
      name = usera.nickname 
      name_id = usera.id 
      print(s) 
      if int(s) <= 50: 
       print('1_iterator') 
       r = api.request(example) 
      elif int(s) <= 100: 
       r = api2.request(example) 
      elif #a total of seven compounds, api3,api4,api5,api6,api7 
      try: 

       for item in r.get_iterator(): 
       #then loop adds data to the database 

как получить цикл каждые 50 итераций подключения к новому API, и если он достигает семи, то снова с самого начала, и поэтому еще не пришло для конечного пользователя в базе данных?

Успешное спасибо!

ответ

2

Вы можете установить itertools.cycle.

apis = itertools.cycle([api1, api2, api3, api4, api5, api6, api7]) 
for s,usera in enumerate(all_users): 
     if (s % 50) == 0: 
      current_api = apis.next() 
     name = usera.nickname 
     name_id = usera.id 
     print(s) 
     current_api.request(example) 
     ... 
+0

Спасибо, после запуска выдает AttributeError: 'itertools.cycle' объект не имеет атрибута 'следующий'. имеет значение API апи = TwitterAPI (CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET) – andronov

+0

изменен на current_api = APIs .__ следующего __() заработал – andronov

+0

Ах, извините, я пропустил, что вы были в Python3. Это 'next' в python 2,' __next__' в python 3. –

Смежные вопросы