从 3.1(目前是 beta)开始,Django 支持异步视图
async def myview(request):
users = User.objects.all()
这个例子不起作用 - 因为 ORM 还没有准备好异步
那么目前的解决方法是什么?
您不能只将 sync_to_async 与 queryset 一起使用 - 因为它们没有被评估:
from asgiref.sync import sync_to_async
async def myview(request):
users = await sync_to_async(User.objects.all)()
所以唯一的方法是在sync_to_async中评估查询集:
async def myview(request):
users = await sync_to_async(lambda: list(User.objects.all()))()
看起来很丑
关于如何使它更好的任何想法?