如何在 Tornado 应用程序中检测长阻塞函数
Posted
技术标签:
【中文标题】如何在 Tornado 应用程序中检测长阻塞函数【英文标题】:How do I detect long blocking functions in Tornado application 【发布时间】:2014-10-29 18:40:19 【问题描述】:我有一个 Tornado 应用程序,有时有人添加了一个在不适当的时间阻塞的代码。
如何检测此类函数,甚至记录哪个处理程序/协程方法阻塞的时间超过 50 毫秒?
我正在查看tornado.gen
中的_make_coroutine_wrapper()
,除了修改源代码外,没有看到任何插入的方法——这对于一次性调试来说是可以的,但有没有更好的方法?
【问题讨论】:
【参考方案1】:您可以使用IOLoop.set_blocking_log_threshold 方法。 set_blocking_log_threshold(0.050)
将在 IOLoop 阻塞超过 50 毫秒时打印堆栈跟踪。
【讨论】:
Tornado 似乎不再支持此功能。有人找到替代品了吗? 如Tornado 5.1 docs中所述,此方法的替换是环境变量PYTHONASYNCIODEBUG=1
,在here中记录以上是关于如何在 Tornado 应用程序中检测长阻塞函数的主要内容,如果未能解决你的问题,请参考以下文章