Как я могу обнаружить длинные блокирующие функции в приложении Tornado
У меня есть приложение Tornado, и иногда кто-то добавляет код, который блокирует на неподходящее время.
Как я могу обнаружить такие функции, может быть, даже записать, какой обработчик / метод coroutine блокирует на время больше, чем, скажем, 50 мс?
Я смотрю на _make_coroutine_wrapper()
в tornado.gen
и не вижу способа вмешаться, кроме изменения исходного кода - что нормально для одноразовой отладки, но есть ли лучший способ?
1 ответ:
Вы можете использовать IOLoop.метод set_blocking_log_threshold .
set_blocking_log_threshold(0.050)
будет выводить трассировку стека в любой момент, когда IOLoop блокируется более чем на 50 мс.