summaryrefslogtreecommitdiff
path: root/django/utils/decorators.py
diff options
context:
space:
mode:
authorAndrew Godwin <andrew@aeracode.org>2020-02-12 15:15:00 -0700
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-03-18 19:59:12 +0100
commitfc0fa72ff4cdbf5861a366e31cb8bbacd44da22d (patch)
treed419ce531586808b0a111664907b859cb6d22862 /django/utils/decorators.py
parent3f7e4b16bf58f99c71570ba75dc97db8265071be (diff)
Fixed #31224 -- Added support for asynchronous views and middleware.
This implements support for asynchronous views, asynchronous tests, asynchronous middleware, and an asynchronous test client.
Diffstat (limited to 'django/utils/decorators.py')
-rw-r--r--django/utils/decorators.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/django/utils/decorators.py b/django/utils/decorators.py
index bb2e498e46..5c9a5d01c7 100644
--- a/django/utils/decorators.py
+++ b/django/utils/decorators.py
@@ -150,3 +150,30 @@ def make_middleware_decorator(middleware_class):
return _wrapped_view
return _decorator
return _make_decorator
+
+
+def sync_and_async_middleware(func):
+ """
+ Mark a middleware factory as returning a hybrid middleware supporting both
+ types of request.
+ """
+ func.sync_capable = True
+ func.async_capable = True
+ return func
+
+
+def sync_only_middleware(func):
+ """
+ Mark a middleware factory as returning a sync middleware.
+ This is the default.
+ """
+ func.sync_capable = True
+ func.async_capable = False
+ return func
+
+
+def async_only_middleware(func):
+ """Mark a middleware factory as returning an async middleware."""
+ func.sync_capable = False
+ func.async_capable = True
+ return func