Я пишу веб-сервер торнадо, и я стараюсь, чтобы он не блокировал одну функцию.Как вы пишете веб-сервер торнадо, который может принимать сразу несколько клиентов?
class TokenHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def post(self):
global t
email = self.get_argument("text")
thread = MetaToken.ExeThread(email,t,self._on_response)
thread.start()
#data = t.analyze(email)
def _on_response(self,json):
self.write(json)
self.finish()
Анализ вызывается в t и может занять несколько секунд. Я в порядке, если другие запросы клиентов могут обрабатываться одновременно. Это работает по большей части, но будет вызывать ошибку при некоторых подключениях, которые поток закрыт.
Трудно отладить вашу программу, не зная, как работает Metatoken.ExeThread. Для чего нужна глобальная переменная 't'? Может ли быть, что последующие запросы, используя одну и ту же глобальную переменную, испортились с обратными вызовами, что привело к «потоковым закрытым» ошибкам? – lbolla