FastAPI - 我应该异步记录吗?

mul*_*iku 10 python io logging fastapi uvicorn

我有一个使用 FastAPI 编写的 python Web 应用程序(通过 uvicorn 运行)。在我的应用程序中,我使用的是标准logging模块,该模块使用TimedRotatingFileHandler. 由于我正在登录文件,因此我担心性能。假设我在一个函数中有 3 条日志消息,每次调用端点时都会调用该函数/test。现在想象 1000 个客户端/test同时请求 - 即向日志文件写入 3000 次。

我担心这会影响应用程序的性能,因为 IO 任务非常耗时。我应该使用某种形式的异步日志记录吗?也许打开一个新线程来写入文件?我尝试用谷歌搜索答案,但没有找到标准化的方法。那么它还需要吗?如果是,我应该如何处理这个问题?谢谢!

小智 0

在我的公司中,我们默认工作的服务器(大约 2k req/s)会记录请求和响应负载,并且根据请求类型还会记录大约 2-3 个日志。当然,这在某种程度上是一个障碍,但除非你真的需要压缩每一点性能,否则很可能还有其他领域会带来更多的改进。

Aiologger 可以是一个解决方案,但如果您正在写入文件,它无论如何都会阻塞,所以要小心。