summaryrefslogtreecommitdiff
path: root/docs/topics
diff options
context:
space:
mode:
authorCarlton Gibson <carlton.gibson@noumenal.es>2022-12-20 11:10:48 +0100
committerGitHub <noreply@github.com>2022-12-20 11:10:48 +0100
commit32d70b2f55b1f74736fd11bc8efce890ad5fa2f0 (patch)
treed88822bb2391e7cf4fdbda59b9f222839aeb7e93 /docs/topics
parenta09d39f28609c707a62dbbbdc4e55489fae1631f (diff)
downloaddjango-32d70b2f55b1f74736fd11bc8efce890ad5fa2f0.tar.gz
Refs #34118 -- Adopted asgiref coroutine detection shims.
Thanks to Mariusz Felisiak for review.
Diffstat (limited to 'docs/topics')
-rw-r--r--docs/topics/async.txt6
-rw-r--r--docs/topics/http/middleware.txt6
2 files changed, 6 insertions, 6 deletions
diff --git a/docs/topics/async.txt b/docs/topics/async.txt
index a3cc77aeba..39ca864655 100644
--- a/docs/topics/async.txt
+++ b/docs/topics/async.txt
@@ -28,10 +28,10 @@ class-based view, this means declaring the HTTP method handlers, such as
.. note::
- Django uses ``asyncio.iscoroutinefunction`` to test if your view is
+ Django uses ``asgiref.sync.iscoroutinefunction`` to test if your view is
asynchronous or not. If you implement your own method of returning a
- coroutine, ensure you set the ``_is_coroutine`` attribute of the view
- to ``asyncio.coroutines._is_coroutine`` so this function returns ``True``.
+ coroutine, ensure you use ``asgiref.sync.markcoroutinefunction`` so this
+ function returns ``True``.
Under a WSGI server, async views will run in their own, one-off event loop.
This means you can use async features, like concurrent async HTTP requests,
diff --git a/docs/topics/http/middleware.txt b/docs/topics/http/middleware.txt
index 29f379889f..e1a3e95ebc 100644
--- a/docs/topics/http/middleware.txt
+++ b/docs/topics/http/middleware.txt
@@ -312,7 +312,7 @@ If your middleware has both ``sync_capable = True`` and
``async_capable = True``, then Django will pass it the request without
converting it. In this case, you can work out if your middleware will receive
async requests by checking if the ``get_response`` object you are passed is a
-coroutine function, using ``asyncio.iscoroutinefunction``.
+coroutine function, using ``asgiref.sync.iscoroutinefunction``.
The ``django.utils.decorators`` module contains
:func:`~django.utils.decorators.sync_only_middleware`,
@@ -331,13 +331,13 @@ at an additional performance penalty.
Here's an example of how to create a middleware function that supports both::
- import asyncio
+ from asgiref.sync import iscoroutinefunction
from django.utils.decorators import sync_and_async_middleware
@sync_and_async_middleware
def simple_middleware(get_response):
# One-time configuration and initialization goes here.
- if asyncio.iscoroutinefunction(get_response):
+ if iscoroutinefunction(get_response):
async def middleware(request):
# Do something here!
response = await get_response(request)