]> git.ipfire.org Git - pbs.git/commitdiff
web: Make the new template engine async
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 12 Jan 2025 12:56:19 +0000 (12:56 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 12 Jan 2025 12:56:19 +0000 (12:56 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/web/base.py
src/web/handlers.py

index 0cbfb142954a467ebc8e466505b139af6eba582d..034bcd75ebc36e293eebfeb76cd23428c7ddbaa8 100644 (file)
@@ -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:
index 9d2987fa17f2996f4ada9dc7f7b37aa948034ec8..f2b51889b5f670f0e8f8d121c34d87b03e4fd4f6 100644 (file)
@@ -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)