[Python] Deploy con nginx e proxy_pass

Manlio Perillo manlio.perillo a gmail.com
Ven 3 Gen 2014 12:45:02 CET


On 03/01/2014 12:34, Alessandro Dentella wrote:
> [...]
> La nostra simulazione è stata fatta con 2 funzioni: is_up e blocking che usa
> time.sleep()
>
>     class IsUp(tornado.web.RequestHandler):
>         def get(self):
>             self.write("Is Up Porta %d" ...)
>     	self.finish()
>
>     class Blocking(tornado.web.RequestHandler):
>         def get(self, numero=10):
>             time.sleep(int(numero))
>     	self.write("Bloccato Porta %s\n" % options.port)
>     	self.finish()
>
> la chiamata usando 'wget -q -O - http://ngtest/blocking/30/' ed
> interrompendolo con Control-c.

Ok.
Ma quante instanze di tornado hai attive?
Se ne hai attiva una sola, mi sembra ovvio che blocca tutto.

Se ne hai N, facendo N richieste di questo genere blocchi ancora tutto.

> In un terminale separato in ciclo di 'wget -q -O - http://ngtest/is_up'
> Il ciclo si blocca nel momento della interruzione e riprende solo quando
> termita il tempo (e quindi il processo si libera)
>

Che ciclo?

 > [...]

Per concludere, tieni conto che usare cose come Tornado è tutt'altro che 
banale.  Tutto lo stack (applicazione + framework + eventuali librerie) 
deve essere sviluppato con la programmazione asincrona in mente.  E' 
vero che ci sono dei monkey patch per alcune funzioni della libreria 
standard, ma non ritengo sia saggio affidarsi ciecamente a loro.  Python 
e la libreria standard semplicemente non sono pensati per un ambiente a 
green thread.



Ciao  Manlio


Maggiori informazioni sulla lista Python