在python中写入日志的最快方法

2024-09-29 21:53:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我在uWSGI中使用gevent循环,并写入redis队列。我得到大约3.5个qps。有时,redis连接会有问题,所以…如果失败,那么写到一个文件,我将有一个单独的进程做清理后。因为我的应用程序对延迟很敏感,在python中什么是最快的转储到磁盘的方法?python日志记录就足够了吗?在


Tags: 文件方法redis应用程序队列进程记录gevent
2条回答

追加到磁盘上的文件很快。在

:~$ time echo "this happened" >> test.file

real    0m0.000s
user    0m0.000s
sys     0m0.000s

用Python附加到一个文件中似乎与bash的数量级差不多。日志模块似乎确实增加了一点开销:

^{pr2}$

这给了我们这个输出:

file append took  0.000263929367065
file append took  6.79492950439e-05
file append took  5.41210174561e-05
logging append took  0.000214815139771
logging append took  0.0001220703125
logging append took  0.00010085105896

但总体来说,我怀疑这个操作将是代码库中非常昂贵的一部分,而且可能不值得担心。如果您担心延迟,那么您应该分析您的代码python -m cProfile code_to_test.py。这将告诉您每个函数需要多长时间,以及应用程序在哪里花费时间。我很怀疑这主要是因为记录错误。在

如果延迟是应用程序的一个关键因素,那么不加限制地写入磁盘会让事情变得非常糟糕。在

如果你想在redis还没关机的时候重启服务器,我看不到除了写磁盘以外的其他解决方案,否则你可能想用ramdisk试试。在

你确定拥有第二个redis实例的第二个服务器不是更好的选择吗?在

关于日志记录,我只使用低级i/O函数,因为它们的开销较小(即使我们所说的机器周期很少)

相关问题 更多 >

    热门问题