aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Grainger <tagrain@gmail.com>2024-04-07 09:05:54 +0100
committerDavid Lord <davidism@gmail.com>2024-05-11 13:41:46 -0700
commit5bc613ec45d51535849e7f8a67364a1fe1c94716 (patch)
tree39381a3ba60dc1b034587dfc6bd2e82e89cf06a1
parent2fcabb529ff69434b9ce5d15d26acdc302f4f3fc (diff)
downloadjinja-5bc613ec45d51535849e7f8a67364a1fe1c94716.tar.gz
use asyncio.run
-rw-r--r--CHANGES.rst8
-rw-r--r--docs/api.rst3
-rw-r--r--src/jinja2/environment.py14
3 files changed, 6 insertions, 19 deletions
diff --git a/CHANGES.rst b/CHANGES.rst
index 92a54697..bd085d03 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -5,6 +5,9 @@ Version 3.1.5
Unreleased
+- Calling sync ``render`` for an async template uses ``asyncio.run``.
+ :pr:`1952`
+
Version 3.1.4
-------------
@@ -138,9 +141,8 @@ Released 2021-05-18
extensions shows more relevant context. :issue:`1429`
- Fixed calling deprecated ``jinja2.Markup`` without an argument.
Use ``markupsafe.Markup`` instead. :issue:`1438`
-- Calling sync ``render`` for an async template uses ``asyncio.run``
- on Python >= 3.7. This fixes a deprecation that Python 3.10
- introduces. :issue:`1443`
+- Calling sync ``render`` for an async template uses ``asyncio.new_event_loop``
+ This fixes a deprecation that Python 3.10 introduces. :issue:`1443`
Version 3.0.0
diff --git a/docs/api.rst b/docs/api.rst
index e2c9bd52..cb62f6c3 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -515,9 +515,6 @@ environment to compile different code behind the scenes in order to
handle async and sync code in an asyncio event loop. This has the
following implications:
-- Template rendering requires an event loop to be available to the
- current thread. :func:`asyncio.get_running_loop` must return an
- event loop.
- The compiled code uses ``await`` for functions and attributes, and
uses ``async for`` loops. In order to support using both async and
sync functions in this context, a small wrapper is placed around
diff --git a/src/jinja2/environment.py b/src/jinja2/environment.py
index 1d3be0be..ed419860 100644
--- a/src/jinja2/environment.py
+++ b/src/jinja2/environment.py
@@ -1282,19 +1282,7 @@ class Template:
if self.environment.is_async:
import asyncio
- close = False
-
- try:
- loop = asyncio.get_running_loop()
- except RuntimeError:
- loop = asyncio.new_event_loop()
- close = True
-
- try:
- return loop.run_until_complete(self.render_async(*args, **kwargs))
- finally:
- if close:
- loop.close()
+ return asyncio.run(self.render_async(*args, **kwargs))
ctx = self.new_context(dict(*args, **kwargs))