6
votes

Serait tordé être un bon choix pour la construction d'un serveur multi-threadé?

Je dois tirer des centaines de comptes de messagerie POP3 et je souhaite construire un serveur robuste pour le faire.

serait tordu être un bon choix pour ce type de projet?

En ce moment, un prototype simple serait de tirer à partir d'un seul compte POP3, puis il tirerait de nombreux mais ce serait un processus sérialisé.

Je veux créer un serveur qui a plusieurs threads afin qu'il puisse faire des choses en même temps.


0 commentaires

4 Réponses :


0
votes

C'est un bon choix pour un serveur, mais à partir de votre description, vous recherchez du client POP multithreaded.

Twisted est fabriqué pour réagir aux événements comme des demandes entrantes, vous devez envoyer des demandes. Dans ce cas, je crains de tordre la valeur limitée.


1 commentaires

Pas du tout. Un client et un serveur ne sont pas vraiment tous ceux qui sont différents lorsqu'il s'agit de la couche de réseau.



2
votes

Considérant que la majorité de votre activité POP3 va être des E / S réseau, c'est là que Twisted Excels. Vous n'êtes pas vraiment enfilé pour effectuer des opérations asynchrones asynchrones basées sur des événements, qui est la gloire couronneuse de torsadée.

Donc, oui, torsadé serait un bon choix pour ce type de projet. Il peut faire des opérations client et serveur également bien et il est presque trivial de faire tourner un nouveau client ASYNC TCP et il a déjà un CLIENT POP3 TCP Disponible par défaut.


0 commentaires

7
votes

Twisted est un cadre de réseau piloté par l'événement écrit en python. Il repose fortement sur les fonctionnalités asynchrones et non bloquantes et est mieux conçue pour développer des applications de réseau qui les utilise. Il dispose d'un support de fil pour les cas d'utilisation dans lesquels vous ne pouvez pas fournir aux E / S non bloquant asynchrones. Ceci est basé sur le fait que la plupart du temps est passé à attendre dans les opérations d'E / S du réseau.

Les deux modèles qui exploite ceci est le modèle de threading où vous créez plusieurs threads, accomplissant chacun une tâche unique ou un processus unique qui utilise des E / S non bloquantes pour accomplir plusieurs tâches dans un seul processus en entrelachange plusieurs tâches. Twisted est très approprié pour le deuxième modèle. P>

Modèle non bloquant P>

+--------------------------+
|task1 | wait period | comp|
+--------------------------+
       +--------------------------+
       |task2 | wait period | comp|
       +--------------------------+


0 commentaires

-1
votes

Un mot de prudence avec torsadée, tandis que torsadé est très robuste, j'ai trouvé que la filature d'une centaine de threads utilisant les exemples de code disponibles dans la documentation est une recette des conditions de course et des blocages. Ma suggestion est essaie tordée mais j'ai le module multithreading STDLIB en attente dans les ailes si tordu devient ingérable. J'ai eu un bon succès avec un modèle de consommateur de producteurs utilisant la bibliothèque susmentionnée.


2 commentaires

Twisted n'est ni plus ni moins sujette aux conditions de race lorsque le filetage est impliqué. Ce qui est grand de torsadé est la capacité de faire tellement de choses sans threads . Et en fait, des aides aiment torsadé.Internet.Trreads.Defertothread en fait prennent un petit morceau de la misère du filetage. ;)


C'est le modèle que je pense que je pense être plus facile à comprendre, plus facile à déboguer et a généralement moins de problème que tordé. Je n'essaie pas de faire l'argument qu'une bibliothèque est meilleure que l'autre. Je conviens que les mérites techniques de tordu sont supérieures, mais ce n'est pas la seule raison d'utiliser un cadre.