|
@@ -12,6 +12,8 @@ There is limited support for other parts of the async ecosystem; namely, Django
|
|
|
can natively talk :doc:`ASGI </howto/deployment/asgi/index>`, and some async
|
|
|
safety support.
|
|
|
|
|
|
+.. _async-safety:
|
|
|
+
|
|
|
Async-safety
|
|
|
------------
|
|
|
|
|
@@ -34,3 +36,21 @@ code from an async context; instead, write your code that talks to async-unsafe
|
|
|
in its own, synchronous function, and call that using
|
|
|
``asgiref.sync.async_to_sync``, or any other preferred way of running
|
|
|
synchronous code in its own thread.
|
|
|
+
|
|
|
+If you are *absolutely* in dire need to run this code from an asynchronous
|
|
|
+context - for example, it is being forced on you by an external environment,
|
|
|
+and you are sure there is no chance of it being run concurrently (e.g. you are
|
|
|
+in a Jupyter_ notebook), then you can disable the warning with the
|
|
|
+``DJANGO_ALLOW_ASYNC_UNSAFE`` environment variable.
|
|
|
+
|
|
|
+.. warning::
|
|
|
+
|
|
|
+ If you enable this option and there is concurrent access to the
|
|
|
+ async-unsafe parts of Django, you may suffer data loss or corruption. Be
|
|
|
+ very careful and do not use this in production environments.
|
|
|
+
|
|
|
+If you need to do this from within Python, do that with ``os.environ``::
|
|
|
+
|
|
|
+ os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"
|
|
|
+
|
|
|
+.. _Jupyter: https://jupyter.org/
|