Свойство модели Django в асинхронной функции, вызываемой из представления Sync
Мне нужно преобразовать некоторые из моих представлений 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()