我有一个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
答案 0 :(得分:1)
这看起来像预期的行为,您是否希望crontab被系统的cron进程使用?如果是这样,则需要将新的crontab文件保存在系统将要处理的位置。当然,如果系统上没有活动的cron进程,则不会发生任何事情。
在Unix系统上,您可以使用self.cron.write_to_user(user=True)
。 python-crontab的完整手册,其中包含有关如何使用各种写入功能的所有信息:https://pypi.org/project/python-crontab/