I would consider this to be a mis-characterization of the benefits of async.
In a true async-first environment, everything is running in the same thread - so the sense of it being “thread-safe” is true in that you don’t have multiple threads accessing the same data objects.
This was an ideal solution for scalability in an era where CPUs and OSs could only reasonably manage a relatively limited number of threads and processes. In a modern environment, there’s much less need to put hard limits on those resources than what was needed 20 years ago.
But in any event, async does not intrinsically “speed things up”. It can increase throughput for certain types of workloads - but any individual request will generally take longer. What does happen is that you theoretically improve parallel operations by not tying up a thread while waiting for IO to complete.
Beyond that, Django isn’t an “async-first” - or even a “primarily-async” framework. All of the database operations are synchronous - the async functions are just thin wrappers around the synchronous API. Template rendering is also a synchronous operation. So using async views is causing more work in switching between these contexts.
As this type of question comes up periodically around here, you might also want to see: