Hyp*_*eus 2 python logging wsgi apache2
我在 apache2 上有一个 WSGI 应用程序,它以最简单的方式写入日志文件:
def log (msg):
with open (LOGFILE, 'a') as f: f.write (msg)
Run Code Online (Sandbox Code Playgroud)
在我的沙箱环境中它运行良好,但我有点担心并发性。如果apache2运行各种线程,我是否需要担心并发问题?我的日志文件可能会被扰乱吗?log (msg)如果另一个线程已经在记录日志,调用可能会失败吗?如果是这种情况,我该如何预防呢?
编辑: 为了测试,我从两个 shell 同时运行两个脚本:
#! /usr/bin/python3.2
def log ():
with open ('log', 'a') as f:
f.write ('message from thread A\n')
while (True): log ()
Run Code Online (Sandbox Code Playgroud)
和
#! /usr/bin/python3.2
def log ():
with open ('log', 'a') as f:
f.write ('message from thread B\n')
while (True): log ()
Run Code Online (Sandbox Code Playgroud)
日志文件看起来不错,没有发生错误。我很幸运,或者从两个不同的线程写入同一个文件是否安全。文件系统是ext4。