Python计划任务每​​14天运行一次

时间:2018-03-12 10:17:29

标签: python schedule

我目前正在开发一个需要每14天运行一次的程序。我已经调查过哪个工作正常,但我对如何解决这个问题有一些疑问。

我将创建一个服务,在CentOS 7系统上处理python程序本身的执行。

这里的问题是,我每14天运行一个生成大量电子邮件地址并将其发送给支持实体的功能。我担心如果发生意外情况,并且程序重新开始 - 支持实体将在收到电子邮件的时间范围之外收到垃圾邮件。

据我所知,Schedule无法确定程序是否已重新启动,因此系统或服务的重启将导致此行为。

在每个完成的函数运行后将日期写入文本文件是否是正确的解决方案,然后每天检查一次该文本文件以确定该函数是否应该运行?这种方法可以在服务和/或系统重启后继续存在,但它是否是正确的"这样做的方式?

****更新****让cronjob在一个月的特定日期(例如1日和15日)运行是不够的。这可能会导致程序处理的数据出现空白。该脚本进行一次调用,从14天开始提取数据,这是脚本支持的最大天数(许可和内容,无法更改,因此不是那么重要,除非是限制)。所以它需要运行让我们说奇数或偶数周数(达到14天)。

有关如何实现这一新信息的任何想法?。

1 个答案:

答案 0 :(得分:2)

您应该查看cron的使用情况(如果您不喜欢该链接,请自行google)。

我建议创建一个每14天由cron调用的简单Python脚本。 crontab条目可能如下所示:

# this will run at 00:01 on the 15th and 30th of every month
1 0 */15 * * /path/to/python/script.py

# this will run at 00:01 on the 1st and 15th of every month
1 0 1,15 * * /path/to/python/script.py

您仍然可以让您的脚本为文件写入某种结果(可能带有时间戳),以便您可以轻松检查该文件以查看它是否正确运行(或记录一些错误信息)。

# this will run at 00:01 on the 1st and 15th of every month
1 0 1,15 * * /path/to/python/script.py >> /path/to/logfile.log 2>&1

修改

如果每月的第1天和第15天不够,您还可以将cron配置为每周一(或其他一天)运行。并且脚本可以检查日志文件以查看它是否在上周一运行,以确保它每两周执行一次业务逻辑。

# this will run at 00:01 once a week on Mondays
1 0 * * 1 /path/to/python/script.py >> /path/to/logfile.log 2>&1