Core.schedule VOLTTRON 中的装饰器

Core.schedule decorator in VOLTTRON

如何使用 Core.schedule() 装饰器安排任务在代理内的特定时间开始?我尝试使用 Core.schedule(deadline, *args, **kwargs),其中 deadline 是日期和时间(即“2016-09-26 10:00:00”),但收到错误 args is not defined。

通常情况下,schedule 方法不用作装饰器,因为计划的回调仅被调用一次。 (我从来没有真正做过。)

*args 和 **kwargs 是传递给函数的变量参数的占位符。参见 http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/

在这种情况下,schedule 方法使用 *args 和 **kwargs 来存储传递给装饰器的任何额外参数,这些参数稍后会传递给被调用函数。

例如,如果我有一个代理方法 update_state(self, parameter1) 并且我想在将来的某个时间将其安排到 运行,由一个名为 [=30 的日期时间对象指定=] 和 parameter1 的值 42 我可以做的:

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

update_time 需要是 python 日期时间对象或 unix 时间戳。

要将它用作装饰器,您可以这样做:

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

当update_time到达时,它将被调用一次。如果您想安排对 update_state 函数的另一个调用,您需要计算出新时间并从 update_state 函数安排它。