我有一个用 tornado
编写的“网关”应用程序,使用 @tornado.gen.coroutine
将信息从一个处理程序传输到另一个处理程序。我正在尝试进行一些调试/状态测试。我想要做的是枚举当前在给定时刻处于事件状态的所有被阻止/等待的协程。这些信息可以在 Tornado 中的某个地方访问吗?
最佳答案
你可能谈论 ioloop _handlers
dict。尝试将其添加到定期回调中:
def print_current_handlers():
io_loop = ioloop.IOLoop.current()
print io_loop._handlers
更新:我检查了源代码,现在认为没有简单的方法来跟踪当前运行的 gen.coroutines,A. Jesse Jiryu Davis 是对的!
但是您可以跟踪来自协程的所有“异步”调用(yields) - 来自生成器的每个yields都会进入IOLoop.add_callback
(http://www.tornadoweb.org/en/stable/ioloop.html#callbacks-and-timeouts)
因此,通过检查 io_loop._callbacks
您可以看到 ioloop 现在的产量。
这里有很多有趣的东西:) https://github.com/tornadoweb/tornado/blob/master/tornado/gen.py
关于python - 是否可以列出所有被阻止的 Tornado 协程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40004443/