[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