ced*_*eds 4 python django asynchronous
我需要转换一些 Django 视图以使用查询数据源的异步函数。我遇到了很大的性能问题,因为这些查询是逐个执行的。然而,任务比预想的要困难得多。
我在下面指出了问题的根源。我也遇到了其他问题,但是,这是迄今为止我不知道该怎么做的问题。我收到以下代码中所示的错误:
django.core.exceptions.SynchronousOnlyOperation:您不能从异步上下文中调用它 - 使用线程或sync_to_async
model2 是指向另一个模型的ForeignKey 属性。
将 model1.model2 包装在sync_to_async() 内不起作用。
知道如何进行这项工作吗?
async def queryFunctionAsync(param1, param2, loop):
model1 = await sync_to_async(Model1.objects.get)(pk=param1)
model2 = model1.model2 # This is where the error is generated
def exampleView(request):
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
data = async_to_sync(queryFunctionAsync)(param1, param2, loop)
loop.close()
Run Code Online (Sandbox Code Playgroud)
这对我有用:
model2 = await sync_to_async(lambda: model1.model2)()
Run Code Online (Sandbox Code Playgroud)
之后 model1 也包含引用。
| 归档时间: |
|
| 查看次数: |
2143 次 |
| 最近记录: |