2014-05-12 16 views
5

Próbuję znaleźć sposób, aby utworzyć ograniczenia w tweepii, aby poradzić sobie z pozostałymi limitami błędów wysyłanych przez API twitter. Używam następujący kod:Błąd limitu pozostałych wartości

limits = myapi.rate_limit_status() 
remain_search_limits = limits['resources']['search']['/search/tweets']['remaining'] 
print remain_search_limits 
print limits 

Właściwie powyższe drukuje kod:

179 
{u'rate_limit_context': {u'access_token': u'179927437-vtHojLnksgUD3FfnueTWVag62Kx5mvAA3uhX7qd7'}, u'resources': {u'account': {u'/account/verify_credentials': {u'reset': 1399886205, u'limit': 15, u'remaining': 0}, u'/account/settings': {u'reset': 1399886857, u'limit': 15, u'remaining': 15}}, u'blocks': {u'/blocks/list': {u'reset': 1399886857, u'limit': 15, u'remaining': 15}, u'/blocks/ids': {u'reset': 1399886857, u'limit': 15, u'remaining': 15}}, u'users': {u'/users/contributors': {u'reset': 1399886857, u'limit': 15, u'remaining': 15}, u'/users/lookup': {u'reset': 

Upiorna problemem jest to, że za każdym razem, że mogę wydrukować remain_search_limits Dostaję 179 jako odpowiedź. Co powinienem użyć, aby się zemdleć, dopóki nie będę mógł ponownie pobrać danych ze Twittera?

My kod końcowy jest następujący:

limits = api.rate_limit_status() 
remain_follower_limits = limits['resources']['followers']['/followers/ids'] ['remaining'] 

with open("ids.txt") as f: 
    content = f.readlines() 

ids = [] 
for page in tweepy.Cursor(api.followers_ids, user_id="dankanter").pages(): 
while remain_follower_limits >4: 
    limits = api.rate_limit_status() 
    remain_follower_limits = limits['resources']['followers']['/followers/ids']['remaining'] 
    ids.extend(page) 
else: 
    time.sleep(60) 

print ids 
print len(ids) 

Jednakże czasami jest stucks w limitach (wiersz = api.rate_limit_status) wewnątrz pętli while. W przypadku, gdy użytkownik ma miliony użytkowników, zwraca tylko podzbiór, który w rzeczywistości jest bardzo mały.

+0

otrzymuję taką samą wartość, chyba zbyt .../aż położę wywołanie myapi.search, po czym niższa wartość jest zwracana. W tym wątku możesz znaleźć przydatne informacje: http://stackoverflow.com/questions/23653432/return-number-of-remaining-hits-tweepy – gumption

+0

Ponieważ 'pozostały_wyszukiwania' reprezentuje _remaining_ wywołań, które możesz wywołać, możesz kontynuować wykonywanie dodatkowych połączeń wyszukiwania, o ile ta liczba jest większa od zera. – gumption

+0

Próbuję zdobyć zwolenników użytkowników, hwat czy muszę zmienić, aby uzyskać rzeczywiste ograniczenia dla tej sprawy? –

Odpowiedz

2

[Podsumowując, wyjaśnienia i opracowania na komentarz wątku w pierwszym poście]

uzyskać taką samą wartość, zbyt ... chyba że/dopóki nie zatelefonować do myapi.search, po czym niższa wartość jest zwracany.

limits['resources'] zawiera listę słowników dla różnych rodzin zasobu (rodzajów połączeń API):

['account', 'blocks', 'users', 'friends', 'help', 'saved_searches', 'lists', 'search', 'application', 'trends', 'followers', 'favorites', 'friendships', 'geo', 'direct_messages', 'statuses', 'mutes'].

Każdy ze słowników skojarzonych z rodziną zasobów zawiera jeden lub więcej kluczy reprezentujących określone metody powiązane z tą rodziną. Wartości każdego z tych kluczy to z kolei słowniki z kluczami dla 'limit', 'remaining' i 'reset'.

Dokumentacja application/rate_limit_status metoda opisuje je następująco:

Metoda ta reaguje z mapą metod należących do rodzin określonych przez parametr zasobów, aktualnych pozostałych zastosowań dla każdego z tych środków w ramach bieżące okno ograniczenia szybkości i jego czas wygaśnięcia w czasie epoki. Zawiera także pole rate_limit_context rate, które wskazuje bieżący kontekst dostępu do tokenu lub .

Od limits['resources']['search']['/search/tweets']['remaining'] oznacza poszukiwanie pozostały wzywa można zrobić, można nadal dokonywać dodatkowych search połączeń ile liczba ta jest większa niż zero; gdy osiągnie zero, będziesz musiał poczekać na kolejne wywołania, aż osiągnięty zostanie czas reset (w Epoch format).

Odnośnie komentarza katamnestycznych, rodzina Resource limits['resources']['followers'] zawiera klucze do metod '/followers/ids' i '/followers/list' i rozmowy 'remaining' można uzyskać za pomocą tego samego schematu jak dla search.

Można znaleźć kilka dodatkowych przydatnych informacji w tym wątku: Return the number of remaining hits tweepy

Powiązane problemy