Как использовать декоратор Core.schedule(), чтобы запланировать запуск задачи в определенное время внутри агента? Я пробовал использовать Core.schedule (крайний срок, * args, ** kwargs), где крайним сроком является дата и время (т. Е. '2016-09-26 10:00:00'), но полученные аргументы об ошибках не определены.Декоратор Core.schedule в VOLTTRON
ответ
Обычно метод расписания не используется в качестве декоратора, поскольку запланированный обратный вызов вызывается только один раз. (Я никогда не делал этого.)
* args и ** kwargs являются держателями места для переменных аргументов, которые передаются функции. См. http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/
В этом случае метод расписания использует * args и ** kwargs для хранения любых дополнительных аргументов, переданных в декоратор, которые затем передаются в вызываемую функцию позже.
Например, если у меня есть агент-метод update_state (self, parameter1), и я хочу запланировать его запуск в будущем, указанный объектом datetime с именем update_time, а значение 42 для значения параметра1 я мог бы do:
self.core.schedule(update_time, self.update_state, 42)
update_time должен быть объектом datetime python или отметкой времени unix.
Чтобы использовать его в качестве декоратора вы могли бы сделать что-то вроде этого:
Core.schedule(update_time, 42)
def update_state(self, parameter1):
pass
Когда update_time прибывает будет называться раз. Если вы хотите запланировать еще один вызов функции update_state, вам нужно будет выяснить новое время и запланировать его из функции update_state.