私は、System.Net.HttpのHTTPClientを使用して、APIに対して要求を出しています。 APIは1秒あたり10リクエストに制限されています。HttpClient要求を制限する簡単な方法
私のコードは大体そうのようなものです:
List<Task> tasks = new List<Task>();
items..Select(i => tasks.Add(ProcessItem(i));
try
{
await Task.WhenAll(taskList.ToArray());
}
catch (Exception ex)
{
}
ProcessItem方法は、いくつかのことを行いますが、常に次を使用してAPIを呼び出します。 await SendRequestAsync(..blah)
。どのようになっています。もともとのコードがうまく働いたが、私はTask.WhenAllを使用し始めたとき、私はAPIからのメッセージ「をレート制限を超え」入門
private async Task<Response> SendRequestAsync(HttpRequestMessage request, CancellationToken token)
{
token.ThrowIfCancellationRequested();
var response = await HttpClient
.SendAsync(request: request, cancellationToken: token).ConfigureAwait(continueOnCapturedContext: false);
token.ThrowIfCancellationRequested();
return await Response.BuildResponse(response);
}
。どのようにして要求が行われる割合を制限できますか?
ProcessItemは、アイテムに応じて1〜4つのAPI呼び出しを行うことができます。
いつでもitems' 'しているどのように多くの要求?あなたは 'taskList'をどこで正確に作りますか? –
18000アイテム、ロットがあります。 – Jacob