2015-01-24 2 views
1

결정된 범주의 언어로 된 기사를 반환하는 API를 사용하고 있습니다. 이 API는 60 분 간격으로 100 회의 통화를 제한합니다.60 분 간격으로 100 개의 API 호출을 무작위로 배포하려면 어떻게해야합니까?

나는 곧바로 100 번 전화를 걸고 60 분이 지날 때까지 스크립트를 기다리게하고 싶지 않습니다.

그런 다음 36 초마다 API 호출을 실행할 수 있지만 API 호출이 고르게 쪼갤 수는 없습니다.

내 스크립트가 100 개의 API 호출을 임의의 간격으로 수행하도록하는 방법은 무엇입니까?

나는이 60 분 간격으로 100 개의 타임 스탬프를 생성하는 기능을 만들고 나서 각 타임 스탬프의 적절한 시간에 API 호출을 실행하겠다고 생각했지만 과장 될 것이라고 생각합니다. 내가 어떻게 할 수 있는지 모르겠다.

답변

2

당신이 할 수있는 일은 기다리는 시간의 최소/최대 간격을 선택하는 것입니다. 지난 60 분 동안 요청 된 요청 수를 기록하고 여전히 할당량보다 적 으면 문서를 다운로드하고 rand(min, max)을 기다립니다. 이는별로 좋지 않으며 60 분 간격으로 대기 시간을 배포하지 않지만 쉽게 구현할 수 있습니다.

또 다른 방법은 060*60 사이에서 100 개의 숫자를 무작위로 선택하는 것입니다. 이것들은 요청을하는 초입니다. next - current 초를 기다릴 때마다 어레이를 진행하면서 배열을 정렬하십시오. (또는 심지어 그것을 단순화하기 위해 스케줄러 모듈을 사용)

+0

'범위 (100)에 x에 대한 random.randint (1,3600)'는 당신에게 무작위 100s를 얻는다 – JAB

+2

@JBradley'random.sample (xrange 1, 3601), 100)'은 중복되지 않았 음을 보장합니다. – jonrsharpe

+0

@viraptor 방금 두 번째 제안을했고 완벽하게 작동했습니다. 감사합니다. – viniciusmunich

관련 문제