Я написал эту функцию, которая обрабатывает «ограничение скорости» курсора Tweepy, чтобы продолжать загрузку из API-интерфейсов Twitter.Положите несколько потоков во время сна/подождите, не используя Time.Sleep()
def limit_handled(cursor, user):
over = False
while True:
try:
if (over == True):
print "Routine Riattivata, Serviamo il numero:", user
over = False
yield cursor.next()
except tweepy.RateLimitError:
print "Raggiunto Limite, Routine in Pausa"
threading.Event.wait(15*60 + 15)
over = True
except tweepy.TweepError:
print "TweepError"
threading.Event.wait(5)
Поскольку я использую Serveral темы для подключения Я хотел бы, чтобы остановить каждого из них, когда возникает ошибка RateLimitError и перезапустить их после 15 минут. я ранее использовал функцию:
time.sleep(x)
Но я понял, что не очень хорошо работает для потоков (счетчик не увеличивается, если поток не активен), поэтому я пытался использовать:
threading.Event.wait(x)
Но эта ошибка возникает:
Exception in thread Thread-15:
Traceback (most recent call last):
File "/home/xor/anaconda/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/home/xor/anaconda/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/home/xor/spyder/algo/HW2/hw2.py", line 117, in work
storeFollowersOnMDB(ids, api, k)
File "/home/xor/spyder/algo/HW2/hw2.py", line 111, in storeFollowersOnMDB
for followersPag in limit_handled(tweepy.Cursor(api.followers_ids, id = user, count=5000).pages(), user):
File "/home/xor/spyder/algo/HW2/hw2.py", line 52, in limit_handled
threading.Event.wait(15*60 + 15)
AttributeError: 'function' object has no attribute 'wait'
Как я могу «сон/ждать» мои темы будучи уверенными, что они проснутся в нужный момент?
Спасибо большое, я гугле, но без успеха. Извините за пустую трату времени! – Aalto
Ах, не проблема, увидела, что вы только начинаете, поэтому я не спускаюсь вниз. также я надеюсь, что вам понравится это сообщество c: – ivan