Как использовать транзакцию с функциями "асинхронизации" в Django?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать транзакцию с функциями "асинхронизации" в Django?

Сообщение Anonymous »

Когда async def call_test (request): называется async def test (): , как показано ниже (я использую django == 3.1.7 ):

Код: Выделить всё

async def test():
for _ in range(0, 3):
print("Test")

async def call_test(request):

await test() # Here

return HttpResponse("Call_test")
< /code>
Не было ошибки, отображающей правильный результат ниже на консоли: < /p>
Test
Test
Test
Но, когда я переворачиваю @transaction.atomic () on async def test (): , как показано ниже:
< Pre Class = "Lang-Py PrettyPrint-Override">

Код: Выделить всё

@transaction.atomic # Here
async def test():
for _ in range(0, 3):
print("Test")

# ...
< /code>
Произошла ошибка ниже: < /p>

django.core.exceptions.synchronousonlyoperation: вы не можете назвать это из асинхронного контекста - Используйте поток или sync_to_async. < /p>
< /blockquote>
Итак, я положил @SYNC_TO_ASYNC 
под @transaction.atomic () , как показано ниже:

Код: Выделить всё

@transaction.atomic
@sync_to_async # Here
async def test():
for _ in range(0, 3):
print("Test")

# ...
< /code>
Но та же самая ошибка, которая приведена ниже br /> из асинхрологического контекста - используйте поток или sync_to_async. < /p>
< /blockquote>
Итак, я положил @sync_to_async 
on @transaction.atomic () , как показано ниже:
@sync_to_async # Here
@transaction.atomic
async def test():
for _ in range(0, 3):
print("Test")

# ...
< /code>
Но другая ошибка, приведенная ниже, произошла: < /p>

runtimewarning: coroutine 'test' никогда не ждал handle = none #< BR /> нужно было разбить циклы, когда происходит исключение. Runtimewarning:
inable tracemalloc для получения Traceback объекта Traceback < /p>
< /blockquote>
Итак, как я могу использовать транзакцию с Async < /code> функциями в django?


Подробнее здесь: https://stackoverflow.com/questions/745 ... -in-django
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как использовать транзакцию с функциями "асинхронизации" в Django?
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как использовать транзакцию с функциями "асинхронизации" в Django?
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Введите аннотацию подсказки для декоратора вокруг функции синхронизации/асинхронизации.
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Функции асинхронизации или синхронизации
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Функции асинхронизации или синхронизации
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

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