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)
但我没搞对。
任何帮助将不胜感激!
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并返回它的异步版本,然后仍然需要调用该版本来执行。
| 归档时间: |
|
| 查看次数: |
4281 次 |
| 最近记录: |