[Python] Concorrenza differita (era: Re: Deploy con nginx e	proxy_pass)
    Nicola Larosa 
    nico a tekNico.net
       
    Mar 24 Dic 2013 13:44:37 CET
    
    
  
Roberto De Ioris wrote:
> #callback based:
> 
> def pluto():
>     print("fine");
> 
> def topolino():
>     wait_for('pluto', pluto)
> 
> def pippo():
>     wait_for('topolino', topolino)
> 
> wait_for('pippo', pippo)
> 
> # coroutine/greenthread/stackswitch/blah blah based:
> 
> wait_for('pippo')
> pippo()
> wait_for('topolino')
> topolino()
> wait_for('pluto')
> pluto()
> 
> 
> Personalmente trovo molto piu' leggibile la seconda forma (anche se
> internamente l'implementazione e' piu' complessa) Se sei un fan di Go mi
> darai regione (visto che e' come funzionano le goroutine) ;)
Ti do ragione completamente. Anch'io trovo poco leggibile dover
saltellare per il codice alla ricerca di callback annidate o agganciate,
e la sintassi pseudosincrona permette di usare il modello a eventi
asincroni, unico modo per scalare tanto, senza doversi aggrovigliare
appresso alle callback.
Ai tempi di Twisted favorivo la sintassi pseudosincrona delle inline
callback a quella nativa, e questa è una delle tante cose che non mi
piacciono di Javascript. Se capisco bene, le promise sono un tentativo di
avere sintassi pseudosincrona anche lì.
E ci hai preso in pieno con l'accenno a goroutine e channel in Go. :-)
Anche in Tornado puoi avere la sintassi pseudosincrona usando
gen.coroutine, quindi magari puoi ripensare se includere di default il
relativo plugin in uWSGI. ;-)
(Gli scatoloni chiamano, ma non potevo non rispondere. :-) )
-- 
Nicola Larosa - http://www.tekNico.net/
We need whistleblowers. We need to know exactly how the NSA and other
agencies are subverting routers, switches, the Internet backbone,
encryption technologies and cloud systems. I already have five stories
from people like you, and I've just started collecting. I want 50.
There's safety in numbers, and this form of civil disobedience is the
moral thing to do. - Bruce Schneier, September 2013
    
    
       
       Maggiori informazioni sulla lista 
	       Python