Tornado est “un framework de serveur Web relativement simple, non bloquant, écrit en Python” - peut-on expliquer un peu ce que cela signifie?

StackOverflow https://stackoverflow.com/questions/1419624

  •  07-07-2019
  •  | 
  •  

Question

C'est probablement une question stupide, mais qu'est-ce qu'un "serveur Web non bloquant"? Tous les serveurs Web ne sont techniquement pas bloquants, n'est-ce pas? sinon, comment pourraient-ils gérer des connexions simultanées? Apache2 y parvient en utilisant une combinaison de fork () et de pthreads. En quoi exactement Tornado (et Twisted également) sont-ils différents? Doivent-ils simplement définir un tas de sockets en mode non-bocking, construire une liste FD (ou l’équivalent), puis boucler dessus avec un grand appel sys select ()?

Où utiliseriez-vous un tel framework et quels avantages peuvent-ils vous apporter par rapport à Apache2 (ou d’autres serveurs populaires)? Merci

Était-ce utile?

La solution

Cet article sur EventMachine . peut également vous donner un indice:

  

Ancrés dans la tradition de la fourche /   serveurs web filetés je me suis retrouvé   plutôt surpris quand j'ai rejoint l'un des   les projets de recherche à l'Université de   Waterloo quelques années en arrière: nous   ont comparé différents serveur Web   architectures, et les plus performants ont été   tous les serveurs événementiels.

     

Comme je harcelais tout le monde avec des questions,   J'ai vite compris pourquoi - dans un   environnement avec des centaines de milliers   demande une seconde, forking et contexte   commutation associée au fil   la gestion devient prohibitive   cher (fourche est le moins performant, comme   il fait une copie de la mémoire sur le parent   processus à chaque fois). Attendu que par   comparaison, un serré et très   optimisé boucle d'événements brille vraiment   quand il s'agit de performance sous   lourdes charges.

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