0

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

4

1 回答 1

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 的日期时间对象和参数 1 的值的值 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 函数安排它。

于 2016-09-26T20:02:43.593 回答