我试图每15分钟打开一个日志文件,看看该文件是否称为'finalize'字符串。我知道如何检查文件中的字符串,但我不知道是否有一种简单的方法让脚本每15分钟看一次。
是否有某种模块允许我这样做?
[编辑] 我想要这个,因为我正在编写一个队列程序。这是一旦一个作业调用finalize,脚本将加载另一个作业,然后监视它直到它完成,等等。
答案 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} }