如何安排一个 python 程序从另一个 python 程序运行?

如何安排一个 python 程序从另一个 python 程序运行?

我正在我的 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() 的秒数,然后让脚本恢复执行(可能通过在循环结束时进行条件睡眠)吗?它将减少其他一些建议所需的外部依赖项的数量。

相关内容