VOLTTRON中的Core.schedule装饰器

时间:2016-09-26 13:29:57

标签: python-decorators volttron

如何使用Core.schedule()装饰器安排任务在代理中的特定时间启动?我尝试使用Core.schedule(截止日期,* args,** kwargs),其中截止日期是日期和时间(即' 2016-09-26 10:00:00'),但收到错误args是没有定义的。

1 个答案:

答案 0 :(得分: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),我想安排在将来的某个时间运行一个名为update_time的日期时间对象,并且值为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函数中安排它。