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