문제가 생겼다. 트위터 API를 활용하여 keyword에 대한 데이터 분석 공부를 하고 있던 도중 에러 메세지가 나왔다.
내가 작성한 코드의 27줄인 tweets = api.serach(keyword)에서 발생하였고 세부적인 오류는 tweepy 모듈의 binder.py에서 발생하였다.
결론적으로 나온 에러 코드는 RateLimitError : 'message': 'Rate limit exceeded', 'code': 88 이다.
직관적으로 해석 해보면 속도 한계 초과, 코드 88이다. 필자는 직관적인 해석으로 대략적인 문제를 판단 하였고 트래픽 문제일 것으로 예상했다. 하지만 단기간 많은 API request를 한 것도 아니고 완료 퍼센트를 수정하기 위해 고작 3번 컴파일한 것이 전부이다.
때문에 본질적인 문제를 알아야 할 필요가 있었다.
문제에 대해서 구글링하던 도중 트위터 API 사용 가이드 및 메뉴얼을 발견하였고 공인된 곳에서 문제점에 대해 찾아볼 수 있었다.
아래 링크는 트위터에서 운영하는 블로그이며, 문제점에 대해서 Q&A 방식으로 기재해 두었다.
blog.twitter.com/en_us/a/2008/what-does-rate-limit-exceeded-mean-updated.html
What does "rate limit exceeded" mean? (UPDATED)
Updated overview of the Twitter API rules and the volume of calls per session. Discusses how to understand limit alerts, statuses, and cycles.
blog.twitter.com
해당 사이트에서 글을 읽어 본 결과
1. 트위터 API는 자체적으로 호출 횟수를 제한한다.
2. 그 호출 횟수는 시간당 100 times call로 지정하였다.
3. 시간에 할당된 횟수를 초과하면 Rate limit exceeded를 띄운다.
4. 물론 API 데이터를 리턴하지 않는다.
5. 호출 횟수를 시간 당으로 할당하였으므로 횟수를 초과한 시간에서 1시간 가량 기다리면 limit은 자동적으로 해제된다.
6. 이 call limit은 서드파티(3rd party) 어플리케이션에만 해당되며 트위터 사이트 자체는 API를 사용하지 않으므로 해당되지 않는다.
위와 같은 사실을 알 수 있었다.
이와 같은 사실을 파악한 후, 강제적으로 1시간 정도 쉬게 되었고 다시 코드를 컴파일 해보았다.
한시간이 지나서 limit가 해제된이후 다시 돌려 보니 정상적으로 코드가 작동한다.
하지만 3번 컴파일하고 호출 횟수가 넘어간다면 코드의 구조적 문제가 더 크다는 것을 알아챘다.
일단 request에 대한 개념과 트위터에서 기재한 호출 횟수의 관계부터 다시 알아봐야겠다.
앞으로 필자가 공부하거나 프로젝트를 진행하면서 맞닥뜨리는 문제에 대해서 이 Various Error 카테고리에 기재하려한다.
중고등학교 시절 누구나 한번 쯤 했었던 오답노트 쯤으로 보면 되겠다. 내가 여기에 문제들과 해결방안들을 기재하므로서 나와 같이 학부생 신분으로 공부하는 분들이나, 전공자는 아니여도 데이터 분석 및 프로그래밍에 관심있는 사람들에게 도움이 되면 좋겠다.
잘못된 정보나 오류, 오타, 독자 입장에서의 수정사항 및 피드백 환영합니다.
E-mail : jhmh0226@gmail.com
'Play with Data > Various Error' 카테고리의 다른 글
xcrun 오류(Mac 업데이트 후 개발 도구 오류, Xcode Command-line Tools 오류) (0) | 2021.03.08 |
---|