Refs -- Made sync_to_async() examples use thread sensitive with ORM calls.
@@ -71,17 +71,18 @@ you will need to wrap it in a :func:`sync_to_async` call. For example::
from asgiref.sync import sync_to_async
- results = sync_to_async(Blog.objects.get)(pk=123)
+ results = await sync_to_async(Blog.objects.get, thread_sensitive=True)(pk=123)
You may find it easier to move any ORM code into its own function and call that
entire function using :func:`sync_to_async`. For example::
from asgiref.sync import sync_to_async
- @sync_to_async
- def get_blog(pk):
+ def _get_blog(pk):
return Blog.objects.select_related('author').get(pk=pk)
+ get_blog = sync_to_async(_get_blog, thread_sensitive=True)
+
If you accidentally try to call a part of Django that is still synchronous-only
from an async view, you will trigger Django's
:ref:`asynchronous safety protection <async-safety>` to protect your data from
