2010-08-08 5 views
8

나는 (Twitter4J API를 사용하는) 자바 트위터 애플 리케이션으로 일하고있다. 나는 응용 프로그램을 만들었으며 현재 사용자의 타임 라인, 사용자 프로필 등을 볼 수 있습니다.속도 제한 초과 - 사용자 정의 트위터 애플

그러나이 응용 프로그램을 사용하면 매우 빠르게 150 요청을 초과하는 것으로 나타났습니다. 주어진 계정에서이 값을 350으로 늘릴 수 있지만 다른 사용자에게는 해결되지 않음).

분명히 이것은 모든 클라이언트에게 영향을 미치지 않습니다.이 문제를 해결하는 방법에 대한 아이디어는 있습니까?

요청으로 간주되는 항목을 아는 사람이 있습니까? 예를 들어, 사용자 프로필을 볼 때 User 객체 (twitter4j)를로드 한 다음 화면 이름, 사용자 이름, 사용자 설명, 사용자 상태 등을 JSON 객체에 넣습니다. 객체를 가져 오는 단일 호출이 될까요? 또는 모든 user.get ... 호출을 포함시킬 수 있습니까?

미리 감사

답변

4

에서 당신은 정말 트위터를 처리 할 때 현재의 요구 카운트가 무엇인지 추적 할 필요가 없습니다.

그러나 트위터는 304 수정되지 않은 (적어도 내가 처리 한 마지막 시간은 아니 었습니다) 수를 줄이지는 않으므로 정상적인 HTTP 캐싱 사용을 위반하지 않는지 확인하십시오. 시간당 실용적인 요청이 올라갑니다.

트위터는 콘텐츠 인코딩이 비 gzipped 엔티티의 인코딩과 다르다는 것을 반영하기 위해 e 태그가 변경 될 때 아파치의 mod_gzip에서 버그가 발생한다는 점에 유의하십시오 (이것이 올바른 것입니다 그렇게하기 위해서는 구현에 버그가 있습니다.) 이 때문에 트위터에서 gzip으로 압축 된 컨텐츠를 받아들이면 결코 304를 보내지 않아 요청 수가 증가하고 많은 경우에 gzip 사용의 효율성이 저하 될 수 있습니다.

따라서 gzip을 수락하면 (웹 라이브러리는 기본적으로 그렇게 할 수 있습니다. 피들러와 같은 도구로 볼 수있는 것을 볼 수 있습니다. 저는 Java 지식이 거의없는 .NET 사용자입니다. 자바 웹 라이브러리의 세부 사항을 모르는 상태에서 트위터가 HTTP를 어떻게 다루는 지에 대한 수준), 그것을 끄고, 개선 여부를 확인하십시오.

+0

조언을 주셔서 감사합니다 - 나는 HTTP 캐싱을 조사하고 내가 적절하게 전화를 캐싱하고 있는지 확인합니다. 나는이 문제의 큰 부분을 식별 해냈다. JSON 객체 (예 : 최근 타임 라인) 목록을 작성하면서 추가로 필요할 수있는 모든 데이터를 가져왔다. 타임 라인 나는 이름/설명/num 팔로워 등 모든 사용자 정보를 가져오고 있었다). 필자는 목록의 기본 데이터 만 가져오고 필요할 때 추가로 데이터를 가져 오는 "지연"을 변경하기 위해이를 변경했습니다. 다시 한번 감사드립니다. – rhinds

+0

FWIW, 나는 트위터에 304와 gzip 사이의 상호 작용으로 버그를보고했다. 아파치 버그이기 때문에 아마도 자신의 레벨에서 해결되지 않을 것입니다. 아파치 버그는 이미 아파치에서 트위터에서 발견했을 때 이미 알려졌다. –

1

트위터의 서버 (즉, HTTP GET을 호출하는 모든 서버)에서 읽는 거의 모든 유형은 요청으로 간주됩니다. 사용자 타임 라인, 리트 윗, 메시지 직접 확인, 사용자 데이터 가져 오기는 각각 1 건으로 계산됩니다. API 제한을 세지 않고 서버에서 읽는 유일한 Twitter API 호출은 속도 제한 상태를 확인하는 것입니다.