Source code for irc.schedule
import abc
from tempora import schedule
[docs]
class IScheduler(metaclass=abc.ABCMeta):
[docs]
@abc.abstractmethod
def execute_every(self, period, func):
"execute func every period"
[docs]
@abc.abstractmethod
def execute_at(self, when, func):
"execute func at when"
[docs]
@abc.abstractmethod
def execute_after(self, delay, func):
"execute func after delay"
[docs]
@abc.abstractmethod
def run_pending(self):
"invoke the functions that are due"
[docs]
class DefaultScheduler(schedule.InvokeScheduler, IScheduler):
[docs]
def execute_every(self, period, func):
"""
Executes `func` every `period`.
:param `func`: function to execute
:param `period`: `int` in seconds, or `datetime.timedelta`
"""
self.add(schedule.PeriodicCommand.after(period, func))
[docs]
def execute_at(self, when, func):
self.add(schedule.DelayedCommand.at_time(when, func))
[docs]
def execute_after(self, delay, func):
self.add(schedule.DelayedCommand.after(delay, func))