1時間あたりのAPI呼び出し数を制限するWebサイトへのAPI呼び出しを数多く作成します。時には100k +通話回数を作るため、必要なすべてのデータを取得するのに数時間かかることがあります。私は、APIコールが1時間あたりの最大数を超えているかどうかをチェックするループを構築したいと思います。また、超過した場合は、開始時と終了時の時間差を確認してください。何かがAPI呼び出し数と時間間隔に関するループ
startTime = Now()
For i = 1 To 150000
If counter <= 36000 Then
url = baseURL + Str(i) + "?apikey=" + apiKey
resp.Open "GET", url
resp.Send
' Process the response
counter = counter + 1
Else # More than 36,000 API calls have been made
Do
# Nothing in the loop, just waiting for 60 minutes to pass
While DateDiff(n, startTime, Now()) < 60
startTime = Now()
i = i - 1 # Need to re-loop on the current i
End If
Next i
ように私はまだそれをテストする機会がなかったが、それがうまくいくように紙の上に見えますが、また、ハックの仕事のように見えます(特にそのI = I - 1)。私がやろうとしていることをする良い方法はありますか?
'OnTime'呼び出しと似ていますが、' count'は静的ではありませんか? – Comintern
カウンタがリセットされるのは、時間が経過するまでサブが再度呼び出されないためです。静的にする必要のある部分はOPのコードです。私はいつ彼がすべてのデータを収集したかを伝える方法がありません。オペレータは、マクロを複数回実行することで依然として望ましい結果が得られるように、コードを構造化する必要があります。 –
意味があります。 OPにはURLに 'Str([loopcounter])'が組み込まれています。私はちょうど 'カウント 'を再利用する方が簡単だと思っていました。 – Comintern