Как улучшить производительность синхронизации fastapi?Python

Программы на Python
Anonymous
Как улучшить производительность синхронизации fastapi?

Сообщение Anonymous »

Я хочу повысить производительность синхронизации на конечной точке fastapi. Пока что я могу добиться хорошей производительности только при использовании асинхронной конечной точки, но столкнулся с узким местом в конечной точке синхронизации.
Код сервера

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

@app.get("/sync/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
time.sleep(1)
return {"item_id": item_id, "q": q}

@app.get("/async/{item_id}")
async def aread_item(item_id: int, q: Union[str, None] = None):
await asyncio.sleep(1)
return {"item_id": item_id, "q": q}
Результаты тестирования
Запуск с помощью fastapi, запустите тест/main.py



Конечная точка
Команда
Запросов в секунду (среднее)



< tr>
Асинхронный

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

ab -c 10000 -n 10000 "http://localhost:8000/async/31"
1496,38 [#/сек]


Синхронизация

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

ab -c 10000 -n 10000 "http://localhost:8000/sync/31"
39,48 [#/сек]


< /div>
Бег с поэзией run Gunicorn тестовый.main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker



Конечная точка
Команда
Запросов в секунду (среднее)




Асинхронный

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

ab -c 10000 -n 10000 "http://localhost:8000/async/31"
3462,74 [#/сек]


Синхронизация

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

ab -c 10000 -n 10000 "http://localhost:8000/sync/31"
105,77 [#/сек]


< /div>
Бег с поэзией run Gunicorn тестовый.main:app --workers 12 --worker-class uvicorn.workers.UvicornWorker



Конечная точка
Команда
Запросов в секунду (среднее)




Асинхронный

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

ab -c 10000 -n 10000 "http://localhost:8000/async/31"
7593,36 [#/сек]


Синхронизация

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

ab -c 10000 -n 10000 "http://localhost:8000/sync/31"
155,80 [#/сек]


< /div>
Работа с uvicorn тестовым.main:app --workers 12 --host 0.0.0.0 --port 8000



Конечная точка
Команда
Запросов в секунду (среднее)




Асинхронный

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

ab -c 10000 -n 100000 "http://localhost:8000/async/31"
7507,83 [#/сек]


< /дел>

Подробнее здесь: https://stackoverflow.com/questions/788 ... of-fastapi

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