Hello Fastapi 社区,这个不是直接具体相关的到 fastapi 但大部分有用的人们在使用python的异步生态系统。

我建立了一个轻量级的工具用来检测阻塞python asyncio事件循环的内容。

- github源码:[https://github.com/amzker/loopsentry]

- HTML报告:[https://htmlpreview.github.io/?https://github.com/amzker/loopsentry/blob/master/examples/report.html]

两年前,当时我仍然是异步领域的一个新手,我经历了一个艰难的过程来理解为什么我的应用突然暂停一切,我花了3-4个夜晚没有睡觉来理解并通过asyncio.to_thread和信号量等手段来patch我的应用,直到它能够正常工作。那个时候我没有找到任何工具来帮助我找到阻塞我的事件循环。今年我接手了一个项目,它的开发者离开了,而且我又面临同样的问题:无数的async函数导致了阻塞。所以今天我创建了LoopsEntry,用来减少异步应用的调试痛苦。

项目非常简单直接。它提供了阻塞的深度报告以及阻塞的详细信息,比如阻塞在哪,阻塞是起因于哪个库还是在您的代码中,逻辑块等,也可以捕获程序运行时CPU、内存和GC的状态,还能够捕获运行时的参数等信息。

ps:不知道这是正确的 subreddit发帖地方,但我创建了LoopsEntry主要是因为我在使用 Fastapi 来构建API,所以就在这里分享。