浏览代码

[aiohttp] Eliminate some overhead in jinja environment (#6289)

* Eliminate some overhead in jinja environment

* Update main.py

* Update views.py

* Update requirements.txt

* Update views.py

* Update requirements.txt

* Update views.py

* Update main.py
Sam Bull 4 年之前
父节点
当前提交
3830f1ffcb

+ 0 - 10
frameworks/Python/aiohttp/app/main.py

@@ -1,10 +1,7 @@
 import os
 import os
 import multiprocessing
 import multiprocessing
-from pathlib import Path
 
 
-import aiohttp_jinja2
 import asyncpg
 import asyncpg
-import jinja2
 from aiohttp import web
 from aiohttp import web
 from sqlalchemy.engine.url import URL
 from sqlalchemy.engine.url import URL
 from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
 from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
@@ -26,8 +23,6 @@ from .views import (
 
 
 CONNECTION_ORM = os.getenv('CONNECTION', 'ORM').upper() == 'ORM'
 CONNECTION_ORM = os.getenv('CONNECTION', 'ORM').upper() == 'ORM'
 
 
-THIS_DIR = Path(__file__).parent
-
 
 
 def pg_dsn() -> str:
 def pg_dsn() -> str:
     """
     """
@@ -81,11 +76,6 @@ def setup_routes(app):
 
 
 def create_app():
 def create_app():
     app = web.Application()
     app = web.Application()
-
-    jinja2_loader = jinja2.FileSystemLoader(str(THIS_DIR / 'templates'))
-    aiohttp_jinja2.setup(app, loader=jinja2_loader)
-
     app.cleanup_ctx.append(db_ctx)
     app.cleanup_ctx.append(db_ctx)
-
     setup_routes(app)
     setup_routes(app)
     return app
     return app

+ 9 - 7
frameworks/Python/aiohttp/app/views.py

@@ -1,16 +1,18 @@
 from functools import partial
 from functools import partial
 from operator import attrgetter, itemgetter
 from operator import attrgetter, itemgetter
+from pathlib import Path
 from random import randint
 from random import randint
 
 
-from aiohttp_jinja2 import template
-from aiohttp.web import Response, json_response
+import jinja2
 import ujson
 import ujson
-
+from aiohttp.web import Response, json_response
 from sqlalchemy import select
 from sqlalchemy import select
 
 
 from .models import sa_fortunes, sa_worlds, Fortune, World
 from .models import sa_fortunes, sa_worlds, Fortune, World
 
 
 json_response = partial(json_response, dumps=ujson.dumps)
 json_response = partial(json_response, dumps=ujson.dumps)
+template_path = Path(__file__).parent / 'templates' / 'fortune.jinja'
+template = jinja2.Template(template_path.read_text())
 
 
 
 
 def get_num_queries(request):
 def get_num_queries(request):
@@ -94,7 +96,6 @@ async def multiple_database_queries_raw(request):
     return json_response(result)
     return json_response(result)
 
 
 
 
-@template('fortune.jinja')
 async def fortunes(request):
 async def fortunes(request):
     """
     """
     Test 4 ORM
     Test 4 ORM
@@ -104,10 +105,10 @@ async def fortunes(request):
         fortunes = ret.all()
         fortunes = ret.all()
     fortunes.append(Fortune(id=0, message='Additional fortune added at request time.'))
     fortunes.append(Fortune(id=0, message='Additional fortune added at request time.'))
     fortunes.sort(key=attrgetter('message'))
     fortunes.sort(key=attrgetter('message'))
-    return {'fortunes': fortunes}
+    content = template.render(fortunes=fortunes)
+    return Response(text=content, content_type='text/html')
 
 
 
 
-@template('fortune.jinja')
 async def fortunes_raw(request):
 async def fortunes_raw(request):
     """
     """
     Test 4 RAW
     Test 4 RAW
@@ -116,7 +117,8 @@ async def fortunes_raw(request):
         fortunes = await conn.fetch('SELECT * FROM Fortune')
         fortunes = await conn.fetch('SELECT * FROM Fortune')
     fortunes.append(dict(id=0, message='Additional fortune added at request time.'))
     fortunes.append(dict(id=0, message='Additional fortune added at request time.'))
     fortunes.sort(key=itemgetter('message'))
     fortunes.sort(key=itemgetter('message'))
-    return {'fortunes': fortunes}
+    content = template.render(fortunes=fortunes)
+    return Response(text=content, content_type='text/html')
 
 
 
 
 async def updates(request):
 async def updates(request):

+ 1 - 1
frameworks/Python/aiohttp/requirements.txt

@@ -1,8 +1,8 @@
 aiohttp==3.7.3
 aiohttp==3.7.3
-aiohttp-jinja2==1.4.2
 asyncpg==0.21.0
 asyncpg==0.21.0
 cchardet==2.1.7
 cchardet==2.1.7
 gunicorn==20.0.4
 gunicorn==20.0.4
+jinja2==2.11.2
 psycopg2==2.8.6
 psycopg2==2.8.6
 SQLAlchemy==1.4.0b1
 SQLAlchemy==1.4.0b1
 ujson==2.0.3
 ujson==2.0.3