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

使用Python每隔15分钟检查一次日志文件,python,time,scheduling,Python,Time,Scheduling,我试图每隔15分钟打开一个日志文件,看看该文件是否称为“finalize”字符串。我知道如何检查文件中的字符串,但我不知道是否有一种简单的方法可以让脚本每隔15分钟查看一次 是否有某种模块允许我这样做 [EDIT]我想要这个,因为我正在编写一个队列程序。也就是说,一旦一个作业调用finalize,脚本将加载另一个作业,然后监视该作业,直到其完成,等等。查看模块: 请看模块: 模块将允许您执行此操作。线程化模块中的类也是如此 然而,对于你想要的东西来说,这两种方法都是过分的 最简单、通常也是最好的

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

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

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

查看模块:

请看模块:

模块将允许您执行此操作。
线程化模块中的类也是如此

然而,对于你想要的东西来说,这两种方法都是过分的

最简单、通常也是最好的方法是使用系统的计划程序(Windows上的计划任务、mac上的启动服务、
cron
或大多数其他系统上的相关程序)每15分钟运行一次程序

或者,只需使用
time.sleep(15*60)
,并检查
time.time()
是否比循环中的最后一次晚15*60秒


从外部触发脚本的一个优点是,更改触发器非常容易。例如,您可以将其更改为在每次修改文件时触发,而不是每15分钟触发一次,而无需更改脚本。(当然,具体的操作方式取决于您的平台;LaunchServices、famd、inotify、FindFirstChangeNotification等。所有这些功能的工作方式都非常不同。但每个现代平台都有一些方法可以做到这一点。)

该模块将允许您这样做。
线程化模块中的类也是如此

然而,对于你想要的东西来说,这两种方法都是过分的

最简单、通常也是最好的方法是使用系统的计划程序(Windows上的计划任务、mac上的启动服务、
cron
或大多数其他系统上的相关程序)每15分钟运行一次程序

或者,只需使用
time.sleep(15*60)
,并检查
time.time()
是否比循环中的最后一次晚15*60秒



从外部触发脚本的一个优点是,更改触发器非常容易。例如,您可以将其更改为在每次修改文件时触发,而不是每15分钟触发一次,而无需更改脚本。(当然,具体的操作方式取决于您的平台;LaunchServices、famd、inotify、FindFirstChangeNotification等都有不同的工作方式。但每个现代平台都有自己的方法。)

您可以使用sched module
scheduler.run()
函数等待下一个事件,然后执行它,依此类推,直到不再有计划的事件。您可以创建一个事件队列来执行此操作。

您可以使用sched module
scheduler.run()
函数等待下一个事件,然后执行它,依此类推,直到不再有计划的事件。您可以创建一个事件队列来执行此操作。

让cron定期运行脚本?代码是否在网页中运行?让cron定期运行脚本?代码是否在网页中运行?
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)