Django 异步模型保存()

ced*_*eds 3 django django-views python-asyncio

由于请求查询阻塞了我的所有线程,我正在将普通视图转换为异步视图。到目前为止,除了一个问题之外,我已经解决了大部分问题。如何异步保存模型?

async def dashboardAddChart(request, rowId):
    row = (await sync_to_async(list)(DashboardRow.objects.filter(pk=rowId).select_related('dashboard__site', 'dashboard__theme')))[0]

    chart = DashboardChart(dashboard=row.dashboard, dashboardRow=row)
    
    if row.dashboard.theme is not None:
        dashboardThemes.applyThemeToChart(chart)

    chart.save()

    chartData = await getChartData(chart.pk)
Run Code Online (Sandbox Code Playgroud)

我尝试过很多事情,chart.save()包括:

await sync_to_async(chart.save)

t = asyncio.ensure_future(sync_to_async(chart.save))
await asyncio.gather(t)
Run Code Online (Sandbox Code Playgroud)

但我没搞对。

任何帮助将不胜感激!

eri*_*ks5 6

await sync_to_async(chart.save)
Run Code Online (Sandbox Code Playgroud)

应该

await sync_to_async(chart.save)()
Run Code Online (Sandbox Code Playgroud)

sync_to_async函数包装chart.save并返回它的异步版本,然后仍然需要调用该版本来执行。