2011-02-26 12 views
2

을-속도를 내가 urllib2를 사용하고 방법 :내가 JSON 데이터를 얻을 필요가 HTTP 요청

request = urllib2.Request(url) 
request.add_header('Accept-Encoding', 'gzip') 
opener = urllib2.build_opener() 
connection = opener.open(request) 
data = connection.read() 

을하지만, 데이터가 너무 커서 아니지만 너무 느립니다.
속도를 높일 방법이 있습니까? 타사 라이브러리도 사용할 수 있습니다.

+0

"너무 느립니다." –

+0

이것은 정말로 가난한 질문입니다. 느린 것을 의미합니까? –

+0

'연결 '이 느린 것 같습니다. * – crodjer

답변

5

Accept-Encoding:gzip은 서버에서 인코딩 된 내용을 보낼 준비가되면 클라이언트가 인코딩 된 내용을 준비 할 준비가되었음을 의미합니다. 요청의 나머지 부분은 소켓과 운영 체제 TCP/IP 스택을 거쳐 물리 계층으로 전달됩니다.

서버가 ETag를 지원하는 경우 If-None-Match 헤더를 보내어 내용이 변경되지 않고 캐시에 의존하는지 확인할 수 있습니다. 예를 들어 given here입니다.

과 같이 HTTP 요청 속도를 향상시킬 수는 없습니다.

+0

귀하의 링크를 확인해 주셔서 감사합니다! – rubik

2

당신은 당신의 통제 내에하지 않을 수 있습니다 여기에 여러 가지의 수에 따라 위치 :

  1. 대기 시간 연결 서버 연결 서버의
  2. 로드의
  3. 대기 시간/대역폭의/대역폭 응용 프로그램 및 개별 프로세스

항목 2와 3은 문제가있는 곳일 수 있으며 많은 부분을 처리 할 수 ​​없습니다. 콘텐츠를 캐시 할 수 있습니까? 이는 서버에서 반환되는 자신의 애플리케이션 요구 및 HTTP 헤더 (예 : ETags, 캐시 제어, 마지막으로 수정 됨)에 따라 달라집니다. 서버는 매일 날짜를 업데이트 할 수 있습니다.이 경우 매 시간마다 데이터를 요청하는 것이 좋습니다.

+0

오, 그래서 해결책이 없다 ... 문제는 ... 나는 나의 연결이 좋기 때문에 뭔가 다른 것이 있다고 생각했다. – rubik

+0

rubik - 서버에 문제가있을 수 있습니다. 그들은 성능을 향상시키기 위해 일부 CDN을 사용할 수 있습니다. –

0

urllib에는 문제가 없을 것입니다. 네트워크 문제 및 성능 문제가있는 경우 Wireshark와 같은 도구를 사용하여 네트워크 수준을 조사하십시오. 나는 이것이 어떤 식 으로든 파이썬과 관련이 있다는 것에 대해 매우 강한 의구심을 갖고 있습니다.

0

많은 요청을하는 경우 스레딩을 살펴보십시오. 약 10 명의 직원이 요청을하면 업무 속도가 빨라집니다. 그 중 하나가 너무 오래 걸리면 연결이 끊어지지 않습니다.

관련 문제