remove ContextVar compat
This commit is contained in:
parent
e609dddd60
commit
1b552d0b01
6 changed files with 22 additions and 13 deletions
|
|
@ -7,8 +7,7 @@ Using ``async`` and ``await``
|
|||
|
||||
Routes, error handlers, before request, after request, and teardown
|
||||
functions can all be coroutine functions if Flask is installed with the
|
||||
``async`` extra (``pip install flask[async]``). It requires Python 3.7+
|
||||
where ``contextvars.ContextVar`` is available. This allows views to be
|
||||
``async`` extra (``pip install flask[async]``). This allows views to be
|
||||
defined with ``async def`` and use ``await``.
|
||||
|
||||
.. code-block:: python
|
||||
|
|
@ -30,6 +29,12 @@ well as all the HTTP method handlers in views that inherit from the
|
|||
something like ``ValueError: set_wakeup_fd only works in main thread``,
|
||||
please upgrade to Python 3.9.
|
||||
|
||||
.. admonition:: Using ``async`` with greenlet
|
||||
|
||||
When using gevent or eventlet to serve an application or patch the
|
||||
runtime, greenlet>=1.0 is required. When using PyPy, PyPy>=7.3.7 is
|
||||
required.
|
||||
|
||||
|
||||
Performance
|
||||
-----------
|
||||
|
|
|
|||
|
|
@ -49,6 +49,18 @@ use them if you install them.
|
|||
.. _watchdog: https://pythonhosted.org/watchdog/
|
||||
|
||||
|
||||
greenlet
|
||||
~~~~~~~~
|
||||
|
||||
You may choose to use gevent or eventlet with your application. In this
|
||||
case, greenlet>=1.0 is required. When using PyPy, PyPy>=7.3.7 is
|
||||
required.
|
||||
|
||||
These are not minimum supported versions, they only indicate the first
|
||||
versions that added necessary features. You should use the latest
|
||||
versions of each.
|
||||
|
||||
|
||||
Virtual environments
|
||||
--------------------
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ filelock==3.3.2
|
|||
# via
|
||||
# tox
|
||||
# virtualenv
|
||||
greenlet==1.1.2
|
||||
greenlet==1.1.2 ; python_version < "3.11"
|
||||
# via -r requirements/tests.in
|
||||
identify==2.3.3
|
||||
# via pre-commit
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
pytest
|
||||
asgiref
|
||||
blinker
|
||||
greenlet
|
||||
greenlet ; python_version < "3.11"
|
||||
python-dotenv
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ attrs==21.2.0
|
|||
# via pytest
|
||||
blinker==1.4
|
||||
# via -r requirements/tests.in
|
||||
greenlet==1.1.2
|
||||
greenlet==1.1.2 ; python_version < "3.11"
|
||||
# via -r requirements/tests.in
|
||||
iniconfig==1.1.1
|
||||
# via pytest
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ from werkzeug.exceptions import BadRequest
|
|||
from werkzeug.exceptions import BadRequestKeyError
|
||||
from werkzeug.exceptions import HTTPException
|
||||
from werkzeug.exceptions import InternalServerError
|
||||
from werkzeug.local import ContextVar
|
||||
from werkzeug.routing import BuildError
|
||||
from werkzeug.routing import Map
|
||||
from werkzeug.routing import MapAdapter
|
||||
|
|
@ -1621,13 +1620,6 @@ class Flask(Scaffold):
|
|||
"Install Flask with the 'async' extra in order to use async views."
|
||||
) from None
|
||||
|
||||
# Check that Werkzeug isn't using its fallback ContextVar class.
|
||||
if ContextVar.__module__ == "werkzeug.local":
|
||||
raise RuntimeError(
|
||||
"Async cannot be used with this combination of Python "
|
||||
"and Greenlet versions."
|
||||
)
|
||||
|
||||
return asgiref_async_to_sync(func)
|
||||
|
||||
def make_response(self, rv: ResponseReturnValue) -> Response:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue