如何在Python中不阻塞地跟踪日志文件?

Patricia Arquette
发布: 2024-11-16 19:58:03
原创
144 人浏览过

How to Tail Log Files in Python Without Blocking?

Python 中的尾部日志文件

问:是否有一种非阻塞或锁定的方式来在 Python 中尾部日志文件,类似于命令尾-F?虽然有较旧的方法,但有更好的解决方案或库吗?

A:非阻塞:

在 Linux 上,利用子进程和选择模块提供了非阻塞解决方案:

import time
import subprocess
import select

f = subprocess.Popen(['tail','-F',filename],\
        stdout=subprocess.PIPE,stderr=subprocess.PIPE)
p = select.poll()
p.register(f.stdout)

while True:
    if p.poll(1):
        print f.stdout.readline()
    time.sleep(1)
登录后复制

此解决方案轮询输出管道以获取新数据并立即显示它。您可以使用自定义功能替换 time.sleep(1) 和 print f.stdout.readline()。

阻塞:

对于阻塞方法,您可以使用没有附加模块的子进程模块:

import subprocess
f = subprocess.Popen(['tail','-F',filename],\
        stdout=subprocess.PIPE,stderr=subprocess.PIPE)
while True:
    line = f.stdout.readline()
    print line
登录后复制

此方法也会在新行出现时打印它们,但它将停止执行,直到尾进程终止(例如,通过 f.kill())。

以上是如何在Python中不阻塞地跟踪日志文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板