> On Mon, Dec 30, 2013 at 05:26:57PM +0100, Roberto De Ioris wrote: >> > Mi pare di capire che la soluzione della listen queue che mi hai >> indicato >> > risolverebbe questo problema. >> > >> >> >> server = HTTPServer(app) >> server.bind(post, backlog=1) >> >> (prova anche con zero, su alcuni kernel funziona, anche se non ricordo >> se >> e' per quelli piu' recenti o quelli piu' vecchi) > > Purtroppo questa strada non ha funzionato. Ricordo che il probelma che > cerchiamo di risolvere è che quando viene interrotto una chiamata "lunga", > nginx libera quella connessione e quindi diritta verso quel processo la > prossima chiamata, ma il processo di fatto è occupato. > > 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. > 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)
provate a ridurre a 3 secondi il proxy_connect_timeout di nginx, e' probabile che abbiate sempre almeno uno slot listen_queue libero anche se lo avete impostato a 1/0. In questo modo se la connessione non completa in 3 secondi, nginx considera il peer morto (e passa a quello dopo se lo avete configurato a dovere) > Credo di capire che vengono descritte più opzioni di configurazione: con i > greenlet ed una programmazione asincrona o con processi tornado > indipendenti. guarda terrei questo approccio proprio come ultima spiaggia (e probabilmente e' piu' semplice modificare tornado) se la osluzione sopra non dovesse funzionare -- Roberto De Ioris http://unbit.it _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python