6
votes

Gestion de plusieurs connexions client tordues

J'essaie d'utiliser Twisted dans une sorte de programme de spidering qui gère plusieurs connexions client. J'aimerais entretenir un bassin d'environ 5 clients travaillant à la fois. La fonctionnalité de chaque client consiste à se connecter à un serveur IRC spécifié qu'il bénéficie d'une liste, entrez un canal spécifique, puis enregistrez la liste des utilisateurs dans ce canal à une base de données.

Le problème que je vais avoir est plus architectural que tout. Je suis assez nouveau à tordu et je ne sais pas quelles options sont disponibles pour la gestion de plusieurs clients. Je suppose que le moyen le plus simple est de simplement avoir chaque instance CompteCreator désactive une fois que cela a terminé ses travaux et avoir une boucle centrale pouvant vérifier s'il y a une place pour ajouter un nouveau client. Je penserais que ce n'est pas un problème particulièrement inhabituel, je espère donc glaner des informations des expériences des autres peuples.


0 commentaires

3 Réponses :


3
votes

Étant donné que chacun de vos clients doit mettre à jour une base de données, je pense instinctivement je pense que je ferais la piggie du pool Connection - voir ICI est recommandé pour plus (l'ensemble du document est recommandé pour certains modèles de conception importants qui émergent souvent lors de l'utilisation torsadée).


0 commentaires

4
votes

La meilleure option est vraiment juste pour faire la chose évidente ici. Ne pas avoir de boucle ou un appel chronométré répété; avoir des gestionnaires qui font la bonne chose.

Gardez un objet de gestion de connexion central et faire des méthodes de traitement des événements alimentant les informations nécessaires pour continuer. Quand il commence, faites 5 connexions sortantes. Gardez une trace du nombre de personnes en cours, maintenez une liste avec eux. Lorsqu'une connexion réussit (dans ConnectionMadeMade ) mettez à jour la liste pour vous rappeler le nouvel état de la connexion. Lorsqu'une connexion complète (dans connectionlost ) indique au gestionnaire de connexion; Sa réponse devrait être de supprimer cette connexion et de faire une nouvelle connexion ailleurs. Au milieu, il devrait être assez évident comment tirer une demande de nom pour les noms dont vous avez besoin et les fourre dans une base de données (en attente de la saisie de la base de données terminée avant de laisser tomber votre connexion IRC, probablement en attente du Différé revenir à partir de adbapi ).


0 commentaires

-1
votes

Je ne sais pas si vous êtes obligé d'utiliser torsadé, sinon vous voudrez peut-être donner gevent a essayer.


0 commentaires