Асинхронный режим Django 5.0.x с необработанным набором запросов и итераторомPython

Программы на Python
Ответить
Anonymous
 Асинхронный режим Django 5.0.x с необработанным набором запросов и итератором

Сообщение Anonymous »

У меня есть необработанный набор запросов, который возвращает несколько миллионов элементов. На самом деле я использую функцию iterator() django для повышения производительности.
Проблема в том, что я хочу сделать функцию, в которой запрос будет называться асинхронным. Из-за этого я больше не могу создавать необработанный набор запросов Django, потому что получаю следующую ошибку: django.core.Exceptions.SynchronousOnlyOperation: вы не можете вызвать это из асинхронного контекста — используйте поток или sync_to_async.
Использование sync_to_async делает невозможным использование итератора. Существует функция aiterator(), но она не работает с необработанным набором запросов. Как я могу использовать итератор с необработанным набором запросов в асинхронном контексте?
Код:
def _get_elements_to_process(self):
return Elements.objects.raw(
"""
My query
""",
)

async def fetch_data(self):
for element in _get_elements_to_process().iterator():
# make some asynchronous action



Подробнее здесь: https://stackoverflow.com/questions/793 ... t-iterator
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»