Я перешел с торнадо 4.2 на торнадо 6.0.3, я получил ошибку
AttributeError: модуль 'tornado.web' не имеет атрибута 'асинхронный'
согласно обсуждению в торнадо v6, кажется, отбросило tornado.web.asynchronous сопрограмму. Есть ли другой способ исправить это в коде?
Я изменил @ tornado.web.asynchronous как @ tornado.gen.coroutine, это исправлено, затем я получил
RuntimeError: Невозможно записать () после окончания ()
согласно RuntimeError: Невозможно записать () после finish (). Может быть вызвано использованием асинхронных операций без @asynchronous декоратора
У меня есть self.finish () после записи (), ошибок нет, но нет вывода
вот мой код
class MyHandler(RequestHandler):
_thread_pool = ThreadPoolExecutor(max_workers=10)
@tornado.gen.coroutine
def post(self):
try:
data = tornado.escape.json_decode(self.request.body)
self.predict('mod1')
except Exception:
self.respond('server_error', 500)
@concurrent.run_on_executor(executor='_thread_pool')
def _b_run(self, mod, X):
results = do some calculation
return results
@gen.coroutine
def predict(self, mod):
model = mod (load from database)
values = (load from database)
results = yield self._b_run(model, values)
self.respond(results)
def respond(self, code=200):
self.set_status(code)
self.write(json.JSONEncoder().encode({
"status": code
}))
self.finish()
несмотря на то, что запись завершена после записи, я не получаю вывод