Tornado è "un framework di server web relativamente semplice e non bloccante scritto in Python" - può in qualche modo spiegare cosa significhi?
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
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.