Може ли някой да ми помогне да реша този проблем. Ето моят код:
class Handler(RequestHandler):
@asynchronous
def get(self):
res = 'result '
_t = threading.Thread(target=self._thread, args=(res,))
print _t, time.time()
_t.start()
def _thread(self, response):
time.sleep(5)
IOLoop.instance().add_callback(callback=lambda: self.print_response(response))
def print_response(self, _response):
self.write(_response)
self.finish()
application = Application([
(r'/', Handler),
])
if __name__ == '__main__':
application.listen(8889)
IOLoop.instance().start()
В браузъра посетете localhost:8889 в един раздел и localhost:8889 в друг: ще видя, че „резултатът“ не се отпечатва във втория раздел, докато първият не приключи, след 5 секунди. Мисля, че бях създаден с 2 нишки паралелна обработка и когато приключих, add_callback води до основен цикъл. Tab2 трябва да има резултати малко след завършване на tab1??? Ако копирам клас Handle в клас Handle1, добавяйки маршрут r'/1', Handle1. Опитайте отново, localhost:8889 и localhost:8889/1 ---> Всичко ще е наред. Всеки може да ми обясни този проблем и как да го реша. Благодаря ти!