2014-04-09 2 views
0

몇 가지 CDN 서비스를 비교해야하므로이 파이썬 스크립트를 사용하여이 CDN에 배포 된 리소스에 반복적으로 요청을 보내고 왕복 시간을 기록합니다. 다른 도시의 여러 PC에서 스크립트를 실행합니다. 내가 어떻게했는지 이것은 대부분의 요청에 대한이것이 왕복 시간을 측정하는 올바른 방법입니까?

t0 = time.clock() 
r = requests.get(test_cdn_url) 
t1 = time.clock() 
roundtrip = t1-t0 # in seconds 

을 왕복 시간은 1 초 내에 : 200-500ms하지만 때때로, 그것은 몇 초에 완료 요청 보고서 : 한 번에 3 ~ 5 초 9 초.

이 방법과 맞습니까, 아니면 잘못된 도구를 사용하여 측정합니까? 다시 말해, 요청 lib가 메트릭을 완전히 잘못 만드는 무언가 (캐싱 또는 일부 중량 작업)를 수행합니까?

+0

측정 항목이 잘못 되었기 때문에 답변을 추가하지 않습니다. b ut [timeit] (https://docs.python.org/2/library/timeit.html) 모듈을 사용할 것입니다. – msvalkon

+0

파이썬 코드의 세미콜론은 필요하지 않으며 코드를 읽기 쉽게 만듭니다. –

+0

@StevenRumbalski 네 말이 맞아, 늙은 습관이 아주 많이 죽어. – NeoWang

답변

2

Response 목적은 elapsed 특성을 제공한다 like :

r = requests.get(test_cdn_url) 
roundtrip = r.elapsed.total_seconds() 
1

당신이 requests 아무것도 무거운 중량 (또는 캐싱)하고있는 것을 걱정하는 경우, 당신은 항상 urllib 사용할 수 있습니다

nf = urllib.urlopen(url) 
t0 = time.time() 
page = nf.read() 
t1 = time.time() 
nf.close() 

roundtrip = t1 - t0 

을 다른 방법으로, 귀하의 요청과 함께 Cache-Control: no-cache 헤더를 포함 할 경우, 그 그 과정에서 어떤 캐싱도 일어나지 않아야하며, 원래의 코드는 요청을 효과적으로 처리해야합니다.

시간의 양이 요청 (a timedelta 같이) 응답의 도착 를 송신 사이에 경과

내 코드는 다음 같을 것이다

관련 문제