[Python] web: sync vs. async

Daniele Varrazzo piro a develer.com
Dom 4 Dic 2011 09:56:17 CET


On Sat, 03 Dec 2011 15:51:08 +0100, Manlio Perillo wrote:
> Il 02/12/2011 23:25, Daniele Varrazzo ha scritto:
[tante cose]

Manlio, una curiosità:

qualunque cosa si cerchi su google riguardo nginx/greenlet/wsgi, spunta 
il tuo nome con qualche lavoro che hai fatto. Ora mi sembra tu 
preferisca non prendere in considerazione i greenlet, preferendo una 
soluzione web server + fork + (eventualmente multithread nei diversi 
processi).

C'è qualcosa che ti ha fatto cambiare idea? Dopo averci giocato hai 
capito che coi greenlet ci sono ostacoli? Qualche esperienza da 
raccontare?

Io come ho detto un'esperienza di "sito web classico" (non molto da 
fare per ogni richiesta, ma molte richieste) non ce l'ho di recente; ho 
provato a googlare per vedere le diverse possibilità di deploy e uno 
degli hit più esaustivi che ho (ri)trovato è stato il mega-confronto di 
Nicholas Piël <http://nichol.as/benchmark-of-python-web-servers>. Tutte 
le soluzioni greenelt sembrano utilizzare un web server proprio, il che 
mi ha sempre vagamente (forse irrazionalmente) innervosito. Questo 
costringe il web server Python anche a servire le risorse statiche, 
compito per cui altri web server (in C) mi sembrano più portati.

C'è una soluzione che tu sappia per avere un web server di fronte 
(nginx ad esempio, ma eventualmente apache o altri) e uno/più processi 
python alle spalle, ognuno in grado di servire più richieste ma usando i 
greenlet anziché thread?

Tra l'altro, nel confronto di sopra, uno dei deploy più performanti è 
risultato uWSGI di Unbit (complimenti!), che usa proprio un modulo C in 
un web server esterno. Nell'articolo viene presentato come soluzione 
processor/thread, ma ricordo che l'anno scorso stavano facendo 
esperimenti coi greenlet. È possibile usare Nginx + uWSGI per servire un 
applicativo wsgi servendo richeste multiple per processo via greenlet?

Ne vale la pena o non ci si guadagna molto rispetto ad usare i thread?

Grazie!

-- 
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com


Maggiori informazioni sulla lista Python