From: Michael Tremer Date: Sun, 12 Jan 2025 12:56:19 +0000 (+0000) Subject: web: Make the new template engine async X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d6dbd8fe224c890d4e73feaa6fe29ba3c293792c;p=pbs.git web: Make the new template engine async Signed-off-by: Michael Tremer --- diff --git a/src/web/base.py b/src/web/base.py index 0cbfb142..034bcd75 100644 --- a/src/web/base.py +++ b/src/web/base.py @@ -223,7 +223,7 @@ class BaseHandler(tornado.web.RequestHandler): autoescape = True, # Enable asyncio - #enable_async = True, + enable_async = True, # Cache templates for forever cache_size = -1, @@ -246,7 +246,7 @@ class BaseHandler(tornado.web.RequestHandler): return ns - def render_string(self, template_name, **kwargs): + async def render_string(self, template_name, **kwargs): """ Generates the given template with the given arguments. """ @@ -266,7 +266,16 @@ class BaseHandler(tornado.web.RequestHandler): namespace = self.get_template_namespace() namespace.update(kwargs) - return template.render(**namespace) + return await template.render_async(**namespace) + + async def render(self, template_name, **kwargs): + """ + Generates the given template and sends it as the response. + """ + html = await self.render_string(template_name, **kwargs) + + # Send the response + self.finish(html) def write_error(self, code, exc_info=None, **kwargs): try: diff --git a/src/web/handlers.py b/src/web/handlers.py index 9d2987fa..f2b51889 100644 --- a/src/web/handlers.py +++ b/src/web/handlers.py @@ -16,12 +16,12 @@ class IndexHandler(base.BaseHandler): # Fetch the total length of the queue queue_length = await self.backend.jobs.queue.get_length() - self.render("index.html", running_jobs=running_jobs, + await self.render("index.html", running_jobs=running_jobs, finished_jobs=finished_jobs, queue_length=queue_length) class LogHandler(base.BaseHandler): - def get(self): + async def get(self): kwargs = { # Pagination "offset" : self.get_argument_int("offset", None) or 0, @@ -35,4 +35,4 @@ class LogHandler(base.BaseHandler): "user" : self.get_argument_user("user", None), } - self.render("log.html", **kwargs) + await self.render("log.html", **kwargs)