我想每15分钟打开一个日志文件,看看这个文件是否叫'finalize'字符串。我知道如何检查文件的字符串,但我不知道是否有一种简单的方法让脚本每15分钟一次。用Python每15分钟检查一次日志文件
是否有某种模块可以让我做到这一点?
[编辑]我想这是因为我正在写队列程序。也就是说,一旦一个工作电话敲定,该脚本将加载另一个作业,然后监视,直到它完成,等
我想每15分钟打开一个日志文件,看看这个文件是否叫'finalize'字符串。我知道如何检查文件的字符串,但我不知道是否有一种简单的方法让脚本每15分钟一次。用Python每15分钟检查一次日志文件
是否有某种模块可以让我做到这一点?
[编辑]我想这是因为我正在写队列程序。也就是说,一旦一个工作电话敲定,该脚本将加载另一个作业,然后监视,直到它完成,等
的sched
模块会让你做这个。 threading
模块中的Timer
类也将如此。
但是,这些都是你想要的东西矫枉过正。
使用系统的调度程序(Windows上的计划任务,Mac上的启动服务,cron
或大多数其他系统上的相关程序)每隔15分钟运行一次程序即可。
或者,只需使用time.sleep(15*60)
,然后检查time.time()
实际上是否比通过该循环的上次时间晚15 * 60秒。
从外部触发脚本的一个优点是它可以非常容易地更改触发器。例如,您可以将其更改为在文件每次修改时触发,而不是每15分钟一次,而不必更改脚本。 (当然,确切的方式取决于您的平台; LaunchServices,famd,inotify,FindFirstChangeNotification等工作方式完全不同,但每个现代平台都有某种方式可以做到这一点。)
在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)
您可以使用调度模块scheduler.run()
该函数等待下一个事件,然后执行它等等,直到没有更多的计划事件。您可以创建一个事件队列来执行此操作。 check out the python docs
只需要cron定期运行脚本? – roippi
代码是否在网页中运行? –