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

Quel module de programmation événementielle

3 réponses
Avatar
Jogo
Bonjour,

Je compte passer le backend de mon serveur NNTP en événementiel. Le
but est de rendre le tout plus rapide et plus modulaire. Le principe :
chaque action reçoit les messages à traiter comme fichier dans un
répertoire lui servant de file d'attente. Ces répertoires sont
surveillés par Linux::Inotify2. Une tâche regroupe un certain nombre
d'actions. À l'intérieur d'une même tâche, les actions s'envoient les
messages à traiter directement par l'API événementielle.

J'ai commencer à me pencher sur POE, mais je regrette que leurs
sessions n'aient pas de priorité. D'autre part j'ai lu sur le web des
critiques sur la lenteur de POE. J'ai alors décourvert qu'il existe sur
le CPAN toute une floppée de module événementiel (EV, Event,
Event::Lib, Stem...). Je n'ai absolument pas le temps de les tester
tous, de les benchmarker, etc... Je viens donc vous demander votre
avis. Lesquels avez-vous utilisés ? Quels ont été leurs défauts, leurs
avantages ?

--
Voter [parallélogramme] était permis,
mais seulement le dimanche, si je ne m'abuse.
*- Zelda Touque sur fr.rec.jeux.nomic -*

3 réponses

Avatar
Jerome Quelin
Jogo wrote:
D'autre part j'ai lu sur le web des critiques sur la lenteur de POE.



tu commences à voir la lenteur de poe aux environs de 1000 messages /
seconde. cela dépend bien sûr de ce que tes gestionnaires d'événements font,
ainsi que de la puissance de la machine qui fait tourner le code.

donc pour ton cas (nntp), je ne pense pas que poe soit "trop lent".

J'ai alors décourvert qu'il existe sur le CPAN toute une floppée de module
événementiel (EV, Event, Event::Lib, Stem...). Je n'ai absolument pas le
temps de les tester tous, de les benchmarker, etc... Je viens donc vous
demander votre avis. Lesquels avez-vous utilisés ? Quels ont été leurs
défauts, leurs avantages ?



j'utilise poe pour certains choses, c'est assez sympa. bien sûr, cela
demande de modifier la manière dont on code (prog événementielle), mais on
s'y fait.

il y a bcp de composants poe haut niveau (cf poe::component::client::nntp
dans ton cas). ajoute à cela que poe s'interface facilement avec des tas de
toolkits (tk, gtk, wx, etc.), je te recommande définitivement poe.

j'ai fait une présentation sur poe aux fpw 2007, disponible sur :
http://merlin.mongueurs.net/talks/intro_poe.pdf

voilà, à toi de voir bien sûr.
jérôme
--

Avatar
Jogo
>> D'autre part j'ai lu sur le web des critiques sur la lenteur de POE.



tu commences à voir la lenteur de poe aux environs de 1000 messages /
seconde.



Je suis effectivement en dessous. Un même message va générer une
vingtaine d'évènements, et on a rarement plus de 10 articles / seconde.

donc pour ton cas (nntp), je ne pense pas que poe soit "trop lent".



Certe, mais un de mes objectifs est tout de même d'accélérer la
transmission d'un message (de pair à pair). C'est un critère souvent
pris en compte pour un serveur Usenet (cf http://news.anthologeek.net/).

il y a bcp de composants poe haut niveau (cf poe::component::client::nntp
dans ton cas).



Ce module n'implémente pas la RFC 4644. Je ne pense pas utiliser de
composants d'aussi haut niveau.

Merci beaucoup,

--
C'est surtout particulièrement masochiste et contre-productif. Si le
principe c'est que celui qui gueule le plus fort à raison, fufe va
devenir un bourbier innomable que même le fme actuel c'est
fr.comp.os.vms à côté.
-- Éric Marillier dans fufe --
Avatar
Jogo
Bonjour,

Je me répond à moi-même. Après un bon mois d'hésitations j'ai
finalement opté pour EV et Coro. Les avantages principaux étant la
possibilité d'avoir des priorités, et la simplicité de
l'implémentation. Je peux ainsi par exemple facilement désynchroniser
les appels à PostgreSQL.

Je vais même finalement étendre cette architecture au frontend. Grace
à IO::Stream je peux non seulement avoir des connexions asynchrones,
mais aussi y ajouter facilement un filtre SSL.

--
http://marion.matabio.net/