Может кто-нибудь помочь мне решить эту проблему. Вот мой код:
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 ---> Все будет в порядке. Любой может объяснить мне эту проблему и как ее решить. Спасибо!