У меня есть служба отчетов в приложении торнадо.
Я хотел бы повторно использовать функцию, которая создает отчеты из отчета Json.
То есть в новом обработчике, который «регенерирует» существующий отчет, я хотел бы повторно использовать существующий обработчик, который знает, как создавать отчеты из Json.
server.py:
def create_server():
return tornado.web.Application([
(r"/task", generator.GenHandler),
(r"/task/(.+)", generator.GenHandler),
url(r"/regenerate_task", generator.GenHandler, name="regenerate_task"),
url(r"/regenerate_task/(.+)", generator.GenHandler, name="regenerate_task"),
(r"/report_status/regenerate", report_status.Regenerate)
genHandler.class:
class GenHandler(tornado.web.RequestHandler):
async def post(self):
try:
LOGGER.info(str(self.request.body))
gen_args = self.parsed_body
# create here report using the parsed body
и это тот обработчик, который я пытаюсь создать.
Он возьмет сохраненный json из БД и создаст совершенно новый отчет с оригинальной логикой отчета.
class Regenerate(tornado.web.RequestHandler):
async def post(self):
rep_id = self.request.arguments.get('rep_id')[0].decode("utf-8") if self.request.arguments.get('rep_id') \
else 0
try:
report = db_handler.get_report_by_id(rep_id)
if *REPORT IS VALID*:
return self.reverse_url("regenerate_task", report)
else:
report = dict(success=True, report_id=rep_id, report=[])
except Exception as ex:
report = dict(success=False, report_id=rep_id, report=[], error=str(ex))
finally:
self.write(report)
Прямо сейчас ничего не происходит. Я просто получаю JSON, который мне нужен, но нет записи для GenHandler и нет создаваемого отчета