我正在编写一个基本的 Flask 应用程序来接受 GET 请求。如何处理 GET 请求并不相关,只是所有事情都发生在一个 Python 进程中,并且只有一个函数被路由来处理 GET 请求。
假设我想记录 GET 请求的参数。我希望能够在从并发 GET 请求创建的多个“线程”中安全地登录到同一文件。我读过 Python 的日志记录是线程安全的,但我不明白这种情况的条件。
例如,使用不同的处理程序/记录器实例而不使用锁或类似的东西记录到同一文件是否安全?使用相同的文件处理程序但不同的记录器实例从不同的线程记录到同一文件是否安全?
我还没有尝试任何东西,因为并发问题不一致,我不想依赖测试来确保其安全性
每个
logging.Handler
实例都有自己的 Lock
,以确保线程安全的使用。
因此,如果您创建一个
logging.Handler
,您可以将其添加到任意多个记录器,并从任意多个线程中使用它,并且对底层文件的访问将是完全安全的。
然而,创建指向 same 文件的 multiple
logging.Handler
实例不是线程安全的。