我在我的Linux服务器上运行一个Python程序,根据一些外部数据,它必须在xx分钟或几小时后再次运行.
所以我们假设它在早上6点运行,然后它必须在早上7点再次运行.
然后,在早上7点,它会检查一些东西,它必须在15:45再次运行,然后是第二天凌晨2点05分,然后是第二天凌晨4.05等.
正如您所看到的,在必须运行的时间内没有预定义的逻辑,它必须在运行时定义.
我知道唯一的任务调度机制是crontab,我不知道如何在不运行crontab -e的情况下向其添加任务,而且crontab似乎更多用于重复任务,在我的情况下我会添加一个crontab作业并在运行之后一旦删除它并添加一个新的.
我唯一能想到的就是在文本文件中设置下一个rundate,然后让crontab作业每分钟检查一次,看是否是时候运行程序了.
解决方法:
crontab应该用于您希望定期重复的作业.另一种方法是at
.使用此实用程序,您可以计划仅执行一次但将来执行的作业.
在python脚本中,您应该能够将命令添加到at的队列中.链接页面和手册页应该为您提供足够的信息.
根据@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)