Простой пример, sleep() в теле эндпоинта FastAPI, три разных варианта.
Инициализация, везде одинаковая
import time
import asyncio
from fastapi import FastAPI
app = FastAPI()
1. Два разных запроса выполнятся асинхронно
@app.get('/')
def root():
time.sleep(10)
return {'message': 'Hello World'}
2. Будет ждать выполнения первого запроса, затем выполнит второй
@app.get('/')
async def root():
time.sleep(10)
return {'message': 'Hello World'}
3. Два разных запроса выполнятся асинхронно
@app.get('/')
async def root():
await asyncio.sleep(10)
return {'message': 'Hello World'}
Почему так работают примеры 2 и 3, мне ясно. Но почему в примере 1 два запроса выполняются асинхронно? Там нет async и используется блокирующий time.sleep(). Не понимаю.