每5分钟使用Crontab for Python脚本

时间:2019-06-19 12:01:14

标签: python cron

我有一个Python脚本,尽管启动它的用户,但我想每5分钟启动一次。我的想法是生成一个可以从存储库下载并可供任何人使用的代码,所以我不想在crontab中指定任何用户,因为我不知道它的名字是什么。

我有一条Luigi管道令人赞叹;如果满足所有要求,它将执行其功能;如果不满足,则不执行任何操作。我想每5分钟运行一次管道以检查条件是否已更改。

我已将此脚本命名为my_cron.py

from crontab import CronTab

class CronManager:
    def __init__(self):
        self.cron = CronTab()

    def add_minutely(self, command, interval, environment=None):
        cron_job = self.cron.new(command=command)
        cron_job.minute.every(interval)
        cron_job.enable()
        self.cron.write('my_cron.tab')

if __name__ == '__main__':
    my_cron = CronManager()
    command = "python -m luigi --local-scheduler --module tasks Main"
    my_cron.add_minutely(command, 5)

我想每5分钟运行一次的脚本是python -m luigi --local-scheduler --module tasks Main,它与my_cron.py位于同一文件夹中,我希望当我运行python my_cron.py时,它将显示在同一控制台上每5分钟执行一次任务的结果。

但是,当我启动my_cron.py时,它就完成了整个过程,并在my_cron.tab上得到了

*/5 * * * * python -m luigi --local-scheduler --module tasks Main

1 个答案:

答案 0 :(得分:1)

这看起来像预期的行为,您是否希望crontab被系统的cron进程使用?如果是这样,则需要将新的crontab文件保存在系统将要处理的位置。当然,如果系统上没有活动的cron进程,则不会发生任何事情。

在Unix系统上,您可以使用self.cron.write_to_user(user=True)。 python-crontab的完整手册,其中包含有关如何使用各种写入功能的所有信息:https://pypi.org/project/python-crontab/