Профилировщик yappi не работает с потоками FastAPI uvicorn
Обзор
Я попытался использовать yappi (версия 1.4.0) для профилирования моего сервера Python (3.10). Я использую FastAPI версии 0.88.0 и uvicorn версии 0.20.0. И как бы я ни пытался запустить многопоточное профилирование, я не могу заставить yappi захватывать что-либо, кроме потока _MainThread :(. Весь
мой фактический код выполняется и создает журналы и результаты, которые я ожидаю, но не могу найти ни одного вызова функции/модуля моего собственного кода в результатах профилирования.
Я видел эту одинокую ветку ( https://github.com/sumerc/yappi/issues/98 ), которая не имеет отношения к моей проблеме, просмотрел все в документации и не увидел ничего плохого в том, что я делаю.
В качестве модуля:
Я попробовал использовать yappi в качестве модуля следующим образом:
import yappi
import fastapi
app = FastAPI()
app.include_router(...)
... # Send out a few requests, see logs of the requests being handled by my code
yappi.start() # 'profile_threads=True' default value
uvicorn.run("main:app")
yappi.stop()
yappi.get_func_stats().print_all()
yappi.get_threads_stats().print_all()
И получите только результаты о _MainThread.
Использование интерфейса командной строки
Я также попробовал использовать CLI, поэтому выполнил следующую команду:yappi server/main.py
и получил тот же результат.
Я ЗНАЮ, что мой код работает, но в результатах профиля о нем нет ни одного упоминания :(