所以我有一个脚本,使用此处的Schedule模块安排一次性作业: 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,并且一旦脚本被调用就开始工作,而不是等待......任何想法为什么会发生这种情况?
答案 0 :(得分:3)
您的代码存在问题
schedule.every().day.at(jobTime).do(startJob(jobID))
它调用startJob(jobID)
并将其作为do
的参数传递。相反,你可能想要
schedule.every().day.at(jobTime).do(startJob, jobID)
计划文档说明startJob
将在计划jobID
时调用(而不是在计划时间)。 Python函数首先评估它们的参数,因此在您甚至关注startJob
之前,您需要调用do
。 Use the Source Luke!