Как я могу обнаружить длинные блокирующие функции в приложении Tornado


У меня есть приложение Tornado, и иногда кто-то добавляет код, который блокирует на неподходящее время.

Как я могу обнаружить такие функции, может быть, даже записать, какой обработчик / метод coroutine блокирует на время больше, чем, скажем, 50 мс?

Я смотрю на _make_coroutine_wrapper() в tornado.gen и не вижу способа вмешаться, кроме изменения исходного кода - что нормально для одноразовой отладки, но есть ли лучший способ?

1 5

1 ответ:

Вы можете использовать IOLoop.метод set_blocking_log_threshold . set_blocking_log_threshold(0.050) будет выводить трассировку стека в любой момент, когда IOLoop блокируется более чем на 50 мс.