2015-10-19 56 views
4

使用APScheduler版本3.0.3。我的應用程序中的服務在內部使用APScheduler來安排&運行作業。此外,我確實在APScheduler周圍創建了一個包裝類(僅僅是一個外觀,有助於單元測試)。對於單元測試這些服務,我可以嘲笑這個包裝類。但是我有一種情況,我非常希望APScheduler能夠運行這個工作(在測試期間)。有什麼辦法可以強制執行這項工作?我們可以強制在APScheduler作業存儲中運行作業嗎?

回答

4

沒有默認觸發立即啓動工作,爲實現這一 你可以得到當前的時間和DateTrigger設置工作是這樣的:

my_job.modify_job(trigger=DateTrigger(run_date=datetime.datetime.now())) 

這樣,您將「強制」作業運行,但你必須確保在調度再次插入工作,另一種選擇是剛剛創建一個新的工作與add_job功能

sched.add_job(func=your_function(), 
       trigger=DateTrigger(run_date=datetime.datetime.now())) 

這樣您不必運行相同的功能做任何額外的步驟。

0

另一種方法:您可以在單獨的函數中編寫作業的邏輯。因此,您可以在預定的工作以及其他地方調用此函數。我想這是一個更明確的方式來做你想做的事情。

相關問題