2016-09-26 75 views
0

如何使用Core.schedule()裝飾器來安排任務在代理內的特定時間啓動?我嘗試使用Core.schedule(截止日期,*參數,** kwargs),其中截止日期是日期和時間(即'2016-09-26 10:00:00'),但收到錯誤參數未定義。VOLTTRON中的Core.schedule裝飾器

回答

0

通常情況下,調度方法不會用作裝飾器,因爲計劃的回調只調用一次。 (我從來沒有真正做過。)

* args和** kwargs是傳遞給函數的變量參數的佔位符。請參閱http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/

在這種情況下,schedule方法使用* args和** kwargs來存儲傳入裝飾器的任何額外參數,然後將其傳遞到調用函數中。

例如,如果我有一個代理方法update_state(self,parameter1),並且我想安排在將來的某個時間運行,並由參數1的值爲42請執行以下操作:

self.core.schedule(update_time, self.update_state, 42) 

update_time需要是python datetime對象或unix時間戳。

要使用它作爲裝飾,你會做這樣的事情:

Core.schedule(update_time, 42) 
def update_state(self, parameter1): 
    pass 

當UPDATE_TIME到達它會被稱爲一次。如果你想安排另一次調用update_state函數,你需要計算出新的時間,並從update_state函數中調度它。