Unter Verwendung der Twitter-API und des twitteR
-Pakets versuche ich, die Benutzerobjekte abzurufen
für eine lange Liste von Namen (zwischen 50.000 und 100.000).
Ich erhalte immer den folgenden Fehler:
%Vor%Der Fehlercode weist angeblich auf "Update-Limits" hin. Das Ratenlimit für Benutzer-Lookups beträgt 180 und die Suche wird in Chargen von 100 Benutzernamen. Daher sollten bis zu 18.000 Benutzer kein Problem darstellen. Aber selbst die Reduzierung der Anzahl auf 6000 (um die Begrenzung der Anfragen über die Nurauthentifizierung der Anwendung einzuhalten) pro 15-Minuten-Zeitfenster führt zu dem gleichen Fehler.
Hier ist ein MWE (für den Sie allerdings brauchen eigene API-Schlüssel ):
%Vor% Manchmal werden manuell kleinere Teilmengen nachgeschlagen, z. via lookupUsers(userNames[1:3000])
funktioniert; Wenn ich versuche, den Prozess zu automatisieren, wird der Fehler jedoch ausgelöst.
Hat jemand eine Idee, was der Grund dafür sein könnte?
Nach dieser Antwort I Das Ratenlimit für twitteR wurde bereits bei der ersten Anfrage festgelegt , es gibt nicht nur Beschränkungen für die Gesamtzahl der Benutzer, sondern auch für die Anzahl der Anrufe pro 15-Minuten-Intervall. Wenn jeder Anruf 100 Benutzer hat und Sie versuchen, 6000 Benutzer zu suchen, sollten Sie 60 Anrufe tätigen, was mehr ist als die 15, die Ihnen erlaubt sind. Versuchen Sie, das Programm in den Ruhezustand zu versetzen und nach 15 Minuten erneut einen Anruf zu senden.
Ich weiß, dass diese Frage alt ist, aber ich hatte dieses Problem in letzter Zeit und konnte keine Antworten finden, die das Problem angemessen gelöst haben.
Das Hinzufügen eines tryCatch()
Fehlerbehandlungssystems und Aufteilen des Aufrufs in zwei kleinere Aufrufe von 50 IDs behob das Problem.
Für mich ist mir aufgefallen, dass die API am selben Punkt scheiterte (um die 4.100. ID). Nachdem ich eine Fehlerbehandlung hinzugefügt hatte, konnte ich ungefähr 8 Abschnitte von 100 in meiner Liste von IDs identifizieren, die nicht funktionierten. Wenn Sie jedoch die twitter-API-Konsole verwenden, haben diese IDs funktioniert. Ich habe den Code in github durchgesehen, konnte aber keinen Grund finden, warum er kaputt gehen sollte. Experimente haben ergeben, dass das Aufteilen des Anrufs in zwei Teile perfekt funktioniert. Hier ist ein Beispiel für Code, der funktioniert.
%Vor%