wniosek teleskopowe są następujące:Python Tornado - Asynchronous Zapytanie blokuje
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()
kiedy dostaję localhost:8888/test
, strona ładuje 10 sekund i pokazuje Awake after 10 seconds
; podczas ładowania, jeśli otworzę localhost:8888/index
w nowej karcie przeglądarki, nowa strona indeksu nie zostanie zablokowana i załadowana natychmiast. Te odpowiadają moim oczekiwaniom.
Jednak podczas ładowania /test
, jeśli otworzę inną /test
w nowej karcie przeglądarki, zostanie ona zablokowana. Drugi /test
rozpoczyna przetwarzanie dopiero po zakończeniu pierwszego.
Jakie błędy tu popełniłem?
Nie mogę uwierzyć, że to jest problem przeglądarki ... Zajęło mi cały dzień, próbując dowiedzieć się, co się stało !! Dzięki wielkie! –
To doprowadzało mnie do szaleństwa przez godzinę. – xyres