Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Récupération de données en temps réel

13 réponses
Avatar
Shakan
Bonsoir j'aurais besoin d'avoir un peu d'aide concernant un projet de
fin d'ann=E9e qui consiste =E0 r=E9cup=E9rer en temps r=E9el des informatio=
ns
boursi=E8res.

J'ai donc cod=E9 un client HTTP qui r=E9cup=E8re les informations sur un
site boursier le probl=E8me =E9tant que je souhaite r=E9cup=E9rer ces m=EAm=
e
informations pour plusieurs titres boursiers et cela au m=EAme moment
avec un temps de latence le plus r=E9duit que possible entre chaque
requ=EAte afin d'=EAtre sur de capturer toutes les informations =E0 peu pr=
=E8s
toute les secondes et donc en temps r=E9el.

Je me suis donc tourn=E9 vers les threads pour r=E9aliser cela mais je ne
sais pas si les performances sont bonnes aussi auriez-vous des
solutions =E0 me proposer concernant mon probl=E8me ?

Ce que je veux dire par l=E0 c'est, est-ce qu'il existe des techniques
efficaces pour affronter ce genre de probl=E8me de r=E9cup=E9ration en temp=
s
r=E9el sur plusieurs pages web ?

Merci d'avance pour votre aide.

3 réponses

1 2
Avatar
Bruno Desthuilliers
Shakan a écrit :
Bonjour, j'ai lu tout vos messages avec attention et à vous lire il
semblerait que le challenge relève de l'impossible en tout cas pour ce
qui est d'obtenir en
temps réel.
Mais je tiens à rectifier en vous disant qu'une latence maximum de 2
secondes devra être la limite à ne pas dépasser.



Ceci ne *peut* pas être garanti. Comme l'explicait Michel, ton programme
dépendra de toutes façons des performances du réseau - donc des
connections réseau de la machine sur laquelle il tourne, de la bande
passante disponible à tous les niveaux, et bien sûr des temps de
réaction des serveurs auprès desquels il va récupérer les infos...

Concernant les performances des threads en Python, elles sont largement


suffisantes.

Au niveau du code qui va me permettre d'envoyer plusieurs requêtes
HTTP en parallèle



A moins d'avoir plusieurs cartes réseau, je ne vois pas comment tu
pourra envoyer plusieurs requêtes en parallèle. Et même si c'était le
cas, les threads ne garantissent pas une exécution *réellement* "en
parallèle" - ce n'est pas matériellement possible sur une machine
monoprocesseur, et ce n'est pas logiciellement possible en CPython (avec
des threads) en raison du GIL.

est-ce que tu pense que ce dernier est d'une
structure simple tel qu'on
le présente dans la plupart des cours d'introduction aux threads ou
bien il faudra que j'utilise des fonctions en plus, rendant mon code
plus compliqué
à lire mais néanmoins me permettant d'obtenir une latence de moins de
2 secondes entre chaque requête envoyée ?



Les threads ne sont pas la seule solution à la problématique de la
concurrence. Et pas forcément la plus simple à mettre en oeuvre,
accessoirement.

En tout état de cause, tout ce que tu peux garantir (et encore... sous
réserve), c'est une latence de moins de deux secondes entre le lancement
de deux chemins d'exécution concurrents. Après, tu dépends de ton
matériel, de ton système, du réseau etc...
Avatar
Bruno Desthuilliers
Shakan a écrit :
(snip)

Bref comme tu dis ca m'étonnerait que le site acceptes plusieurs
centaines de requêtes HTTP en même temps



Pour quelle définition de "en même temps" ?

mais il faut savoir que quand plusieurs personnes consultent des pages
sur le site ca revient
un peu au même



Dans la pratique, il est rare qu'un internaute consultant un site
rafraichisse la page toutes les secondes - ne serait-ce que parce le
temps moyen de traitement (entre la récupération de la page et son
affichage pas le navigateur) est généralement supérieur !-)

Bref, même les architectures prévues pour supporter des montées en
charge importantes ont des limites sur le nombre de connections
*simultanées* qu'elles peuvent supporter. Renseigne toi sur les attaques
par déni de service...

donc je ne pense pas que ca pose un réel problème de
charge.



A ta place, je n'en serai pas si sûr. Un robot d'indexation un peu
indélicat (ou un peu trop "pressé") peut faire écrouler un serveur.
Avatar
Xavier Maillard
At Thu, 14 May 2009 23:24:10 -0700 (PDT),
Shakan wrote:

Bref comme tu dis ca m'étonnerait que le site acceptes plusieurs
centaines de requêtes HTTP en même temps
mais il faut savoir que quand plusieurs personnes consultent des pages
sur le site ca revient
un peu au même donc je ne pense pas que ca pose un réel problème de
charge.



Oui et non. Plusieurs centaines de connexions simultanées en
provenance de plusieurs centaines/milliers d'utilisateurs (donc
clients) ce n'est pas la même chose que *une seule et unique* personne
faisant ces centaines de connexions.

Enfin à toi de me dire ce que tu en penses et je te remercie pour ton
aide.



A titre perso, j'ai dit adieux a toutes ces histoires de polling que
je trouve à la fois "has been" et hors de propos. En sus de gaspiller
énormément de ressources (souvent en vain), je trouve ces mécanismes
totalement inéfficaces.

Bon courage cependant ;)

Xavier
1 2