[Python] web: sync vs. async

Daniele Varrazzo piro a develer.com
Ven 2 Dic 2011 23:25:30 CET


On Fri, 02 Dec 2011 22:53:17 +0100, Manlio Perillo wrote:

> Usando thread o processi?
> Che tipo di hardware e che web server (nel caso di applicazioni web)?
> Quante connessioni concorrenti?
>
> Infine una curiosità: assumendo che sia il vecchio che il nuovo
> application server offrano WSGI e che nel nuovo usi greenlet, quanto
> impegno ha preso la riscrittura dell'applicazione?

No, l'assunzione è sbagliata. I nostri programmi non sempre sono 
classici programmi web, non abbiamo il tipico "tanti client web da far 
scalare". La concorrenza ce l'abbiamo su problemi da risolvere 
contemporaneamente in un ambiente event-driven: non c'è wsgi di mezzo. 
Una nostra architettura "tipica" potrebbe essere un controller scritto 
in eventlet e uno sfacelo di slave esterni, ognuno in un processo. Il 
controller è una delle tipiche cose scritte originalmente con i thread e 
che oltre i 15-20 slave trova un muro.


> Splittarlo su N processi fissi: quindi mi aspetto che Apache + 
> mod_wsgi
> con N processi worker non abbia troppi problemi.
>
> Magari mi aspetto troppo da Apache, ma se la tua soluzione funziona e
> Apache no, significa che mi sono perso qualcosa.

Il problema non è apache, quello ha ben poco da fare. Il problema è 
solo fare concorrenza con python, per la qual cosa i thread non vanno 
bene, indipendentemente da wsgi che ci metti in mezzo, che è solo un 
protocollo.


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



Maggiori informazioni sulla lista Python