mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Refs #34118 -- Adopted asgiref coroutine detection shims.
Thanks to Mariusz Felisiak for review.
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user