Профилировщик 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
и получил тот же результат.

Я ЗНАЮ, что мой код работает, но в результатах профиля о нем нет ни одного упоминания :(

0 ответов

Другие вопросы по тегам