2015-09-28 32 views
1

所以我有安排使用計劃模塊一次工作在這裏找到一個腳本: https://github.com/dbader/schedulePython的時間表不工作

眼下,作業從使用使用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而且它只要腳本被調用開始作業,而不是等待......任何想法,爲什麼發生這種情況?

回答

3

與您的代碼的問題是

schedule.every().day.at(jobTime).do(startJob(jobID)) 

它調用startJob(jobID)並傳遞作爲do參數。相反,你可能想

schedule.every().day.at(jobTime).do(startJob, jobID) 

時間表文檔說,startJob將與jobID時,它的計劃這樣做(在計劃時間代替)調用。 Python函數首先評估它們的參數,因此,在你關注do之前,你需要調用startJobUse the Source Luke!

+0

驚人的是,這麼簡單的事情可能會導致幾個小時的挫折! – amartin94

+0

謝謝!並享受你的upvote&正確答案:) – amartin94