Почему я получаю результаты этого ajax вызова мгновенно, хотя у меня асинхронный код?

Я изучаю асинхронное программирование на Python и не могу понять, почему я получаю мгновенный ответ, когда вызываю маршрут, соответствующий этому вызову (я вызываю его как ajax вызов, платформа - Django, этот файл - views.py файл в приложении Django)?

(Когда я нажимаю на кнопку, ajax вызывает метод buy, он имитирует покупку акций в песочнице и возвращает результат, я хочу, чтобы он подождал 5 секунд и затем вернул результат, вместо этого я получаю результаты вызова ajax почти сразу)

async def buy(request):

    figi = request.GET.get('figi', 'missing')
    data = {
        'result': 'success',
        'figi': figi
    }

    SANDBOX_TOKEN = 'some_token'

    async def buy_stock():
        try:
            async with TinkoffInvestmentsRESTClient(
                token=SANDBOX_TOKEN) as rest:
    
                order = await rest.orders.create_market_order(
                    figi="BBG000BTR593",
                    lots=1,
                    operation=OperationType.BUY,
                )
    
                await asyncio.sleep(5)
    
                result = await rest.orders.create_limit_order(
                    figi="BBG000BTR593",
                    lots=1,
                    operation=OperationType.SELL,
                    price=50.3,
                )
    
                return 'result'
        except TinkoffInvestmentsError as e:
            print(e)
    
    result = await buy_stock()    
    
    return JsonResponse({
        'result': 'success',
        'message': result
    }, safe=False)        

Другими словами, вызов seems не ждет завершения работы async-методов и сразу отправляет JsonResponse

Вернуться на верх