使用Python每15分钟检查一次日志文件

时间:2013-07-17 19:30:35

标签: python time scheduling

我试图每15分钟打开一个日志文件,看看该文件是否称为'finalize'字符串。我知道如何检查文件中的字符串,但我不知道是否有一种简单的方法让脚本每15分钟看一次。

是否有某种模块允许我这样做?

[编辑] 我想要这个,因为我正在编写一个队列程序。这是一旦一个作业调用finalize,脚本将加载另一个作业,然后监视它直到它完成,等等。

3 个答案:

答案 0 :(得分:3)

sched模块将允许您执行此操作。 threading模块中的Timer类也是如此。

然而,其中任何一种都是过度杀戮的。

这种简单,通常最好的方法是使用系统的调度程序(Windows上的计划任务,Mac上的启动服务,cron或大多数其他系统上的相关程序)来运行程序15分钟。

或者,只需使用time.sleep(15*60),然后检查time.time()实际上是否比上次循环时间晚了15 * 60秒。


从外部触发脚本的一个优点是它可以很容易地更改触发器。例如,您可以将其更改为每次修改文件时触发,而不是每15分钟触发一次,而根本不更改脚本。 (当然,这样做的确切方式取决于您的平台; LaunchServices,famd,inotify,FindFirstChangeNotification等都有不同的工作方式。但是每个现代平台都有一些方法可以做到。)

答案 1 :(得分:2)

查看python-tail模块:

import tail

def print_line(txt):
    print 'finalize' in txt

t = tail.Tail('/var/log/syslog')
t.register_callback(print_line)
t.follow(s=60*15)

答案 2 :(得分:0)

您可以使用sched模块scheduler.run()该函数等待下一个事件,然后执行它,依此类推,直到没有更多的预定事件。您可以创建一个事件队列来执行此操作。{{3} }