diff options
author | Thomas Grainger <tagrain@gmail.com> | 2024-04-07 09:05:54 +0100 |
---|---|---|
committer | David Lord <davidism@gmail.com> | 2024-05-11 13:41:46 -0700 |
commit | 5bc613ec45d51535849e7f8a67364a1fe1c94716 (patch) | |
tree | 39381a3ba60dc1b034587dfc6bd2e82e89cf06a1 | |
parent | 2fcabb529ff69434b9ce5d15d26acdc302f4f3fc (diff) | |
download | jinja-5bc613ec45d51535849e7f8a67364a1fe1c94716.tar.gz |
use asyncio.run
-rw-r--r-- | CHANGES.rst | 8 | ||||
-rw-r--r-- | docs/api.rst | 3 | ||||
-rw-r--r-- | src/jinja2/environment.py | 14 |
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)) |