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