python - 是否可以列出所有被阻止的 Tornado 协程

标签 python tornado

我有一个用 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/

相关文章:

python - 将从 python 字典中提取的信息写入文件

python - 为 Tornado 定义模板配置时出现我不明白的错误

python - 有谁知道 Tornado Web 框架的异步 CouchBase 客户端?

Python 正则表达式 字符之间的匹配

python - 在 Django 中集成 elasticsearch 连接池

python - 如何直接从列表范围分配变量值

python - 在 Python 中安装 mahotas 后无法定位 freeimage

python - 带有 Tornado 的 Websockets : Get access from the "outside" to send messages to clients

javascript - 使用 jQuery 和 Tornado 进行跨源资源共享 (CORS)

python - Tornado IOStream.read_until_close 无法正常工作