트위터 API는 클라이언트에게 주어진 시간동안 제한된 수의 call을 만들도록 허용합니다. 이러한 정책은 두 API들에게 다른 방법으로 적용됩니다.
REST API Rate Limiting
REST API를 위한 기본 rate limit은 시간당 150개의 요청입니다. REST API는 계정기반, IP기반 rate limiting을 실행합니다. 인증된 API 호출은 인증된 사용자 계정의 제한으로 공제되는 반면, 인증되지 않은 API 호출은 호출한 IP 주소의 제한으로 공제됩니다.
Rate limiting은 단지 HTTP GET 커맨드를 사용하여 정보를 요청하는 메소드에만 적용됩니다. statuses/update처럼 데이터를 트위터에 제출(submit)하기 위해 HTTP POST를 사용하는 API 메소드들은 rate limit이 적용되지 않습니다. 게다가 account/rate_limit_status 를 위한 요청은 limit수를 까먹지 않습니다. 이러한 제한되지 않은 메소드에는 하루 업데이트와 follower 제한(daily update and follower limits)은 여전히 적용되는데, 이는 건전한 사용을 권장하고 스팸을 차단하기 위함입니다.
당신의 어플리키에션이 HTTP 400 응답 코드를 받기 시작한다면 REST API에 의해 rate-limit된다는 것을 알아야 합니다. 이것은 어플리케이션이 그들의 현재 rate limit 상태를 모니터링하고 필요하다면 동적으로 요청을 조절할 수 있는 최선의 방법입니다. REST API는 이러한 상태를 알아내기 위한 두가지 방법을 제공합니다.
1. account/rate_limit_status 메소드. 이 메소드를 호출하는 것은 요청자의 API 제한으로 카운트되지 않습니다.
2. HTTP 응답 헤더는 rate limit을 카운트 하고 있는 모든 REST API 응답을 포함합니다.
X-RateLimit-Limit the current limit in effect
X-RateLimit-Remaining the number of hits remaining before you are rate limited
X-RateLimit-Reset the time the current rate limiting period ends in epoch time.
Whitelisting
어떤 어플리케이션은 기본 제한이 충분하지 못하다고 생각할겁니다. 이러한 환경에서, 우리는 Whitelisting을 제공합니다. 특정 계정과 IP 주소를 화이트 리스트 하는 것이 가능합니다. 화이트 리스트된 계정이나 IP주소들은 시간당 20000개의 요청이 허용됩니다. 만약 당신이 화이트 리스팅을 고려해야하는 어플을 짜고 있다면 화이트 리스팅 요청서(whitelisting request form)를 작성해주십시오. 우리가 직접 리뷰하는 프로세스는 일주일정도 걸립니다. 만약 당신이 Whitelisting에 추가하거나 삭제해야할 IP주소가 있다면 변경에 대한 설명과 함께 요청서를 재작성해야 합니다. Whitelisting 요청에 대한 승인이나 거절은 요청서에 있는 이메일 주소로 전송됩니다.
IP whitelisting은 계정 rate limit보다 우위에 있습니다. 화이트 리스팅된 IP 주소로부터의 GET 요청은 사용자 제한이 아닌 IP 제한에서 제외됩니다. 그러므로 IP 기반 화이트 리스팅은 많은 사용자의 데이터를 요청하는 어플리케이션을 위한 최고의 방법입니다.
화이트리스팅은 POST 요청과 관련된 일간 업데이트와 follower 제한을 없애지는 않습니다. : 이 제한은 계정 기반으로 관리됩니다.
만약 트위터로부터 당신의 계정이나 IP 주소가 화이트 리스팅 승인을 받는다면, 당신은 당신의 화이트 리스팅을 accounts/rate limit status 메소드로 이를 증명할 수 있습니다. 증명서와 함께 이 메소드를 호출하면 승인된 사용자의 rate limit 상태가 리턴되고, 증명서 없이 호출하면 호출한 IP 주소의 rate limit 상태가 리턴됩니다.
Search API Rate Limiting
Search API는 IP 주소에 의해 rate limit됩니다. 주어진 IP 주소로부터 요청될 수 있는 search 요청의 숫자는 search rate limiter에 의해 계산됩니다. 클라이언트가 주어진 시간동안 만들수 있는 요청의 정확한 갯수는 알려지지 않았습니다. Search API는 REST API처럼 시간당 150개의 요청으로 제한되지는 않습니다. 숫자는 좀 더 크며, 대부분의 어플리케이션에서 관대하고 충분하다고 생각하고 있습니다. 우리는 불필요한 search의 사용을 억제하기 위해 정확한 갯수를 알려주지 않을겁니다.
Search API를 사용할때는 어플리케이션이 특별하고 확인가능한 사용자 에이전트 스트링(User Agent String)을 가지고 있어야 합니다. HTTP Referrer가 있으면 좋지만 반드시 필요한 것은 아닙니다. Search API를 사용하지만 사용자 에이전트 스트링을 가지고 있지 않은 사용자들은 좀더 낮은 rate limit를 받게 됩니다.
Search API의 rate limit를 초과하는 어플리케이션은 요청에 대해 HTTP 503 응답코드를 받을겁니다. 이 에러 상태를 보고 이것이 언제 사용가능해지는지를 알려주는 Retry-After 헤더를 참조하는 것이 최고의 방법입니다. Retry-After 헤더값은 다른 요청을 제출하기 전에 기다려야 하는 시간을 초단위로 알려줍니다.(예를들면 Retry-After: 67)
Whitelisting
REST API와 달리 Search API에서는 white list와 관련된 방법이 없습니다. 그러나 특별한 상황에서는 Search 요청의 rate limit을 올리기 위해 노력하고 있습니다. 우리는 Search API를 위한 우선권이 있는 화이트 리스트를 가지고 있지 않습니다. 당신은 우리가 화이트 리스팅에 대해 논의하기 전에 좀 더 많은 캐패시티가 필요다고 증명할 수 있는, 잘 동작하는 어플리케이션을 가지고 있어야 합니다. 만약 당신이 당신의 어플리케이션이 요청을 적절하게 제한하고 통합하기 위해 할 수 있는 모든것을 하고 있다고 느낀다면, 당신이 필요한것을 논의하기 위해 트위터에 연락하십시오. Search API는 IP 주소에 대해서만 화이트리스팅 할 수 있고, 계정으로는 하지 못합니다. 이것은 구글 어플 엔진과 같은 클라우드 플랫폼, Search 화이트 리스팅을 받을 수 없는 스태틱 IP 주소가 없는 어플리케이션을 제외한 대부분의 상황에서 잘 동작합니다.
Rate Limiter를 피하는 방법
Rate Limiter로부터 생기는 문제를 피하기 위해 다음과 같은 일반적인 테크닉과 디자인이 사용될 수 있습니다.
1. 캐싱(Caching) : 당신이 많은 양의 요청을 할거라고 생각한다면, API 응답을 당신의 어플이나 사이트에 저장하세요. 예를들어 매우 유명한 웹사이트에서 모든 페이지 로드마다 트위터 API를 호출하지 마십시요. 대신에 API를 좀 더 덜 빈번하게 호출하고, 응답을 클라이언트측에 저장하고, 페이지 로드시에는 저장된 것을 보여주세요.
2. 접속된 사용자를 우선순위화 하십시오 : 당신의 사이트가 많은 트위터 사용자들을 관리하고 있다면(예를들어, 그들의 현재 상태나 그들의 트위터 사용의 통계를 가져온다면), 최근에 당신의 사이트에 로그인한 사용자들의 데이터만 요청하는 것을 고려하십시오.
3. Search back-offs : 만약 당신의 어플리케이션이 매우 많은 양의 search 용어를 모니터링 한다면, 아무런 결과가 없는 서치결과에 대한 용어에 대해서는 덜 자주 요청을 보내십시오. back-off를 사용함으로써 거의 변하지 않는 요청 쿼리의 사이클을 낭비하지 않고 요청에 대한 최신 상황을 알 수 있습니다.
Blacklisting
우리는 당신이 rate limit을 존중해줄것을 요청합니다. rate-limiter를 피하기 위한 일관된 failure는 트위터에게 자동으로 당신의 어플리케이션을 블랙리스팅하라고 신호를 보냅니다. 만약 클라이언트가 요청에 대한 응답을 받지 못한다면 당신이 블랙리스트되었음을 알아야합니다. 이것은 API 요청이 블랙홀 아래로 보내지는것과 같습니다.
만약 당신의 어플리케이션이 블랙리스트되었고 당신이 서비스를 다시 시작하고 싶다면 다음과 같이 하십시오
1. 당신이 REST API를 사용한다면, 계정이나 컴퓨터로부터 accont/rate limit status(account/rate_limit_status) 콜을 만드십시오
2. 왜 당신은 당신의 어플리케이션이 블랙리스트되었다고 생각하는지 설명하십시오.
3. 어떻게 당신이 블랫리스팅을 일으킨 문제를 고쳤는지 기술하십시오
이 정보를 우리의 supprot folks(email to our support folks)로 보내주십시오, 그러면 당신은 다시 온라인 세계로 돌아올 수 있습니다.
'정보모음' 카테고리의 다른 글
| LG IPS모니터와 푸른거탑이 만났다! (0) | 2013.06.25 |
|---|

