我正在我的 Linux 服务器上运行一个 Python 程序,根据一些外部数据,它必须在xx
几分钟或几小时后再次运行。
假设它在早上 6 点运行,然后必须在早上 7 点再次运行。然后,在上午 7 点,它会检查一些内容,并且必须在 15:45 再次运行,然后在第二天凌晨 2.05 运行,然后在第二天凌晨 4.05 运行,依此类推。
正如您所看到的,在它必须运行的时候没有预定义的逻辑,它必须在它运行时定义。
我知道的唯一任务计划机制是crontab
,但我不确定如何在不运行的情况下向其添加任务crontab -e
,除此之外,这crontab
似乎更适合重复任务,在我的情况下,我会添加一个crontab
作业,运行一次后再次删除它并添加一个新的。
我唯一能想到的就是在文本文件中设置下一个运行日期,并让作业crontab
每分钟检查一次,看看是否到了运行程序的时间。
答案1
Python-crontab模块看起来很有前途。轻松添加和删除任务。
还有一个线程@stackoverflow还有一些更方便的想法和链接。
答案2
crontab
应该用于您想要定期重复的作业。另一种选择是at
。使用此实用程序,您可以安排只想执行一次但在将来执行的作业。
从python
-script 中,您应该能够将命令添加到at
.链接页面和man
-page 应该为您提供足够的信息来开始操作。
根据 @Michel 的评论,这将是
newruntime = (datetime.datetime.now() + datetime.timedelta(minutes=5)).strftime("%H:%M %d.%m.%Y")
command = 'echo " python mainprog.py" | at ' + newruntime
os.system(command)
答案3
做时间.sleep()不适合你吗?我的意思是:您不能只传递等待 sleep() 的秒数,然后让脚本恢复执行(可能通过在循环结束时进行条件睡眠)吗?它将减少其他一些建议所需的外部依赖项的数量。