2016-09-26 39 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函数中调度它。