所以我有一个脚本可以使用此处的“计划”模块来安排一次性作业: https://github.com/dbader/schedule
现在,使用 os.System() 从另一个 Python 脚本调用该作业,并通过 Sys.argv[2] 提供一个 JobTime,通常看起来像“13:26”。
def startJob(jobID):
#Some Job that runs once
sys.exit()
def main(jobID, jobTime):
#startJob(jobID)
print("Scheduling Scan Job For: %s" % (jobTime))
schedule.every().day.at(jobTime).do(startJob(jobID))
while True:
schedule.run_pending()
time.sleep(1)
jobID = sys.argv[1]
jobTime = sys.argv[2]
main(jobID, jobTime)
但是由于某种原因,作业没有被安排在特定的 jobTime 上,而是在调用脚本后立即开始作业,而不是等待......知道为什么会这样吗?
请您参考如下方法:
你的代码有问题
schedule.every().day.at(jobTime).do(startJob(jobID))
它调用 startJob(jobID) 并将其作为参数传递给 do。相反,您可能想要
schedule.every().day.at(jobTime).do(startJob, jobID)
计划文档说 startJob 将在计划执行时(而不是在计划时间)使用 jobID 调用。 Python 函数首先计算它们的参数,因此您甚至在关心 do 之前就调用了 startJob。 Use the Source Luke!
