J'ai créé une application console qui effectue essentiellement une grande quantité de requêtes vers mon serveur. 10-15000 demandes par utilisateur.Exécution simultanée de requêtes http à l'aide de httpclient dans .NET C#
J'ai écrit ce code qui utilise la bibliothèque client HTTP .NET:
public async Task<string> DoRequest(string token)
{
var request = new HttpRequestMessage(HttpMethod.Post, "mysite.com");
string requestXML = "my xml request goes her...";
request.Content = new StringContent(requestXML, Encoding.UTF8, "text/xml");
var response = await httpClient.SendAsync(request);
return await response.Content.ReadAsStringAsync();
}
Alors maintenant, je suis en train d'effectuer autant que les requêtes HTTP que je peux par 1 seconde ... Je don sais pas ce qui est la limite supérieure de cette façon que je l'ai utilisé en parallèle pour la boucle pour accélérer ceci:
Parallel.For(0,list.Count(),items=>{
DoRequest(item.Token);
});
Mais je ne suis pas très heureux avec la vitesse du code et la façon dont les demandes sont en cours ..
Y a-t-il un moyen de faire avancer les choses? Peut-être jusqu'à 10-100 demandes par seconde? Ou quelle est la limite maximale?
Quelqu'un peut-il m'aider?
P.S. les gars je n'ai créé qu'une seule instance de la classe httpclient parce que j'ai lu que c'est une bonne habitude de n'en faire qu'une puisque chaque fois qu'un nouvel objet de cette classe est créé, la connexion se ferme, ce qui n'est pas ce que nous voulons.
Votre test peut ne pas être particulièrement utile. Par exemple, 'HttpClient' est limité au nombre de connexions au même serveur à un moment donné (bien que vous puissiez le changer avec' ServicePointManager.DefaultConnectionLimit') – DavidG
@DavidG pouvez-vous me montrer exactement comment faire cela et où? Dans cette même méthode ou? – User987
ServicePointManager.DefaultConnectionLimit est une propriété @ User987 qu'il suffit de définir. – Botonomous