2013-07-17 71 views
1

我想每15分钟打开一个日志文件,看看这个文件是否叫'finalize'字符串。我知道如何检查文件的字符串,但我不知道是否有一种简单的方法让脚本每15分钟一次。用Python每15分钟检查一次日志文件

是否有某种模块可以让我做到这一点?

[编辑]我想这是因为我正在写队列程序。也就是说,一旦一个工作电话敲定,该脚本将加载另一个作业,然后监视,直到它完成,等

+1

只需要cron定期运行脚本? – roippi

+0

代码是否在网页中运行? –

回答

3

sched模块会让你做这个。 threading模块中的Timer类也将如此。

但是,这些都是你想要的东西矫枉过正。

使用系统的调度程序(Windows上的计划任务,Mac上的启动服务,cron或大多数其他系统上的相关程序)每隔15分钟运行一次程序即可。

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


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

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) 
0

您可以使用调度模块scheduler.run()该函数等待下一个事件,然后执行它等等,直到没有更多的计划事件。您可以创建一个事件队列来执行此操作。 check out the python docs