Question

Je travaille sur l'écriture d'un client Python pour les réseaux P2P Direct Connect. Essentiellement, cela fonctionne en se connectant à un serveur central, et de répondre à d'autres utilisateurs qui recherchent des fichiers.

De temps en temps, un autre client nous demandera de se connecter à eux, et ils pourraient commencer de nous télécharger un fichier. Ceci est une connexion directe à l'autre client, et ne passe pas par le serveur central.

Quelle est la meilleure façon de gérer ces connexions avec d'autres clients? J'utilise actuellement un réacteur tordu pour se connecter au serveur, mais il est mieux d'avoir plusieurs réacteurs, un par client, chacun en cours d'exécution dans un thread différent? Ou serait-il préférable d'avoir un script Python complètement séparé qui effectue la connexion au client?

S'il y a une autre solution que je ne sais pas, j'aimerais entendre. Je suis nouveau à la programmation avec Twisted, donc je suis ouvert aux suggestions et d'autres ressources.

Merci!

Était-ce utile?

La solution

Sans connaître tous les détails du protocole, je recommande toujours à l'aide d'un seul réacteur - une balance de réacteur tout à fait (ceux particulièrement avancés tels que PollReactor) bien et cette façon, vous éviterez ainsi les frais généraux connecté avec des fils (qui est comme tordu et d'autres systèmes async obtiennent leur gain de performance fondamentale, après tout - en évitant les frais généraux tels). Dans la pratique, les discussions dans Twisted sont utiles surtout lorsque vous avez besoin d'interface à une bibliothèque dont les fonctions pourraient bloquer sur vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top