Свойство модели 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()
Вернуться на верх