IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

[C#] Requêtes web simultanées avec X threads


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Valter
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2008
    Messages : 113
    Par défaut [C#] Requêtes web simultanées avec X threads
    Bonjour.

    J'ai une liste de pages web (disons 1 000 pour se donner une idée) et j'aimerais en récupérer le statut HTTP... le problème est que vu que la liste de pages est assez conséquente (1 000), je veux pouvoir utiliser plusieurs threads et donc faire plusieurs requêtes "en même temps" sans attendre le retour de la requête précédente.

    J'aimerais aussi pouvoir indiquer un nombre maximum de threads pour pas griller ma bande passante

    Je galère sur ce problème depuis quelques temps déjà, que ce soit avec les threads, les Task ou les async / await... je n'ai rien réussi

    Pour le moment mon code ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    string[] urlz = XXX;
     
     
    List<Task> threadz = new List<Task>();
    SemaphoreSlim throttler = new SemaphoreSlim(initialCount: 25); // nb max de threads
    foreach (string u in urlz) {
        await throttler.WaitAsync();
     
     
                    threadz.Add(
                        Task.Run(async () =>
                        {
                            try
                            {
                                resultat += await fonction(u);
                            }
                            finally
                            {
                                throttler.Release();
                            }
                        }));
                }
     
     
    await Task.WhenAll(threadz);
    textboks.Text = resultat;

    Avez-vous des suggestions ?

    TLDR : Je veux faire un programme qui envoie des requêtes simultanées sur plusieurs pages web (mais jamais plus de X à la fois) et qui récupère les résultats.

    Merci de vos réponses.

  2. #2
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Dans ton cas, l'utilisation de [c]Parallel.ForEach[c/] me semble tout indiqué. En conjonction avec ParallelOptions.MaxDegreeOfParallelism il y a moyen de limiter le nombre de traitement simultanés

Discussions similaires

  1. [XL-2010] réouverture d'une requête web avec identification
    Par grostathar dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/11/2012, 11h53
  2. [Débutant] Requêtes HTTP Asynchrone avec Wintellect.Threading
    Par vladvonjim dans le forum C#
    Réponses: 0
    Dernier message: 21/01/2012, 00h07
  3. Multi Requête web simultanées ?
    Par vladvonjim dans le forum C#
    Réponses: 6
    Dernier message: 18/01/2012, 12h09
  4. Problème requête web Avec variables
    Par Joe-Rato dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/09/2011, 15h58
  5. Deux requêtes simultanées avec mysql_query($req,$db)
    Par Nicomart dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 03/09/2007, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo