2016-10-17 6 views
0

작은 zip 파일을 다운로드하려고하는데 Ruby RestClient 라이브러리가 매우 느립니다. 브라우저를 통한 다운로드는 < 1 초가 걸립니다. 하지만 루비는 몇 분이 걸립니다.RestClient.get은 작은 파일을 다운로드하는 속도가 매우 느립니다.

왜 그럴 수 있습니까?

예 :

require 'rest-client' 

RestClient.get("http://prd-enforce-xfr-02.dol.gov/data_catalog/OSHA/osha_accident_abstract_20161013.csv.zip") 

답변

0

내가 그 서버가 깨진의 IPv6 AAAA의 기록을 가지고 생각합니다.

prd-enforce-xfr-02.dol.gov has address 63.106.133.229 
prd-enforce-xfr-02.dol.gov has IPv6 address 2607:f250:d008:2029:63:106:133:129 

IPv6를 통해 서버에 연결할 수 없습니다. wget을 사용하여 다운로드하면 시간 초과 후 IPv4로 돌아갑니다.

$ wget --timeout=20 http://prd-enforce-xfr-02.dol.gov/data_catalog/OSHA/osha_accident_abstract_20161019.csv.zip 
--2016-10-19 22:40:24-- http://prd-enforce-xfr-02.dol.gov/data_catalog/OSHA/osha_accident_abstract_20161019.csv.zip 
Resolving prd-enforce-xfr-02.dol.gov (prd-enforce-xfr-02.dol.gov)... 2607:f250:d008:2029:63:106:133:129, 63.106.133.229 
Connecting to prd-enforce-xfr-02.dol.gov (prd-enforce-xfr-02.dol.gov)|2607:f250:d008:2029:63:106:133:129|:80... failed: Connection timed out. 
Connecting to prd-enforce-xfr-02.dol.gov (prd-enforce-xfr-02.dol.gov)|63.106.133.229|:80... connected. 
HTTP request sent, awaiting response... 200 OK 

휴식 클라이언트에서 Ruby Net :: HTTP는 아마도 유사한 종류의 시간 초과를 수행하고있을 것입니다. 나는 브라우저가 빠른 대체를하는 것에 대해 훨씬 똑똑하다고 상상한다. 불행히도 나는 rest-client에서 IPv6을 비활성화하는 방법이 있는지 확신하지 못합니다.

원시 Net :: HTTP를 사용하면 IPv4 사용을 강제하기 위해 local_host을 로컬 IPv4 주소로 설정할 수 있습니다.