La gestori delle richieste sono le seguenti:Python Tornado - asincrona richiesta sta bloccando
class TestHandler(tornado.web.RequestHandler): # localhost:8888/test
@tornado.web.asynchronous
def get(self):
t = threading.Thread(target = self.newThread)
t.start()
def newThread(self):
print "new thread called, sleeping"
time.sleep(10)
self.write("Awake after 10 seconds!")
self.finish()
class IndexHandler(tornado.web.RequestHandler): # localhost:8888/
def get(self):
self.write("It is not blocked!")
self.finish()
Quando ottengo localhost:8888/test
, la pagina viene caricata 10 secondi e mostra Awake after 10 seconds
; durante il caricamento, se apro localhost:8888/index
in una nuova scheda del browser, la nuova pagina indice non viene bloccata e caricata immediatamente. Questi si adattano alle mie aspettative.
Tuttavia, mentre il /test
si sta caricando, se apro un altro /test
in una nuova scheda del browser, è bloccato. Il secondo /test
inizia l'elaborazione solo al termine del primo.
Quali errori ho fatto qui?
Non posso credere che questo sia il problema del browser .... Mi ci è voluto un giorno intero a cercare di capire cosa è successo !! Grazie mille! –
Questo mi stava facendo impazzire per un'ora ora. – xyres