X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/060d38d627bd1e51dd2b3c6e7de9af6aa7d7b6f3..9fdfd5c5b229ea42193710f891e953b452bd90e7:/services/nodemanager/arvnodeman/timedcallback.py diff --git a/services/nodemanager/arvnodeman/timedcallback.py b/services/nodemanager/arvnodeman/timedcallback.py index 4d2a1394df..e7e3f25fe3 100644 --- a/services/nodemanager/arvnodeman/timedcallback.py +++ b/services/nodemanager/arvnodeman/timedcallback.py @@ -19,11 +19,15 @@ class TimedCallBackActor(actor_class): message at a later time. This actor runs the necessary event loop for delivery. """ - def __init__(self, max_sleep=1): + def __init__(self, max_sleep=1, timefunc=None): super(TimedCallBackActor, self).__init__() self._proxy = self.actor_ref.tell_proxy() self.messages = [] self.max_sleep = max_sleep + if timefunc is None: + self._timefunc = time.time + else: + self._timefunc = timefunc def schedule(self, delivery_time, receiver, *args, **kwargs): if not self.messages: @@ -33,7 +37,7 @@ class TimedCallBackActor(actor_class): def deliver(self): if not self.messages: return - til_next = self.messages[0][0] - time.time() + til_next = self.messages[0][0] - self._timefunc() if til_next <= 0: t, receiver, args, kwargs = heapq.heappop(self.messages) try: