Tornado è "un framework di server web relativamente semplice e non bloccante scritto in Python" - può in qualche modo spiegare cosa significhi?

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

  •  07-07-2019
  •  | 
  •  

Domanda

Questa è probabilmente una domanda stupida, ma cos'è esattamente un "server web non bloccante"? Tutti i web server sono tecnicamente non bloccanti, vero? altrimenti come potrebbero gestire connessioni simultanee? Apache2 ottiene questo risultato usando una combinazione di fork () e pthreads. In che modo esattamente Tornado (e anche Twisted) sono diversi? Hanno appena impostato un gruppo di socket in modalità non bocking, creano un elenco FD (o equivalente) e poi lo ricoprono con una grande chiamata sys select ()?

Dove useresti un framework come questi e quali vantaggi possono offrirti su Apache2 (o altri server popolari)? Grazie

È stato utile?

Soluzione

Questo articolo su EventMachine potrebbe anche darti un suggerimento:

  

Forte della tradizione del biforcazione /   mi sono trovato web server threaded   piuttosto sorpreso quando mi sono unito a uno dei   i progetti di ricerca dell'Università di   Waterloo un paio d'anni fa: noi   stavano confrontando diversi web-server   architetture e le migliori prestazioni erano   tutti i server basati su eventi.

     

Mentre infastidivo tutti con domande,   Ho rapidamente capito perché - in un   ambiente con centinaia di migliaia   richiede un secondo, biforcazione e contesto   commutazione associata al thread   la gestione diventa proibitiva   costoso (la forcella ha le prestazioni peggiori, come   esegue una copia di memoria sul genitore   processo ogni volta). Considerando che   confronto, stretto e altamente   il loop degli eventi ottimizzato brilla davvero   quando si tratta di prestazioni sotto   carichi pesanti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top