projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch '12057-nodemanager-priority' closes #12057
[arvados.git]
/
services
/
nodemanager
/
arvnodeman
/
timedcallback.py
diff --git
a/services/nodemanager/arvnodeman/timedcallback.py
b/services/nodemanager/arvnodeman/timedcallback.py
index a1df8ec17bcaa5956b0404e75e00dc295652476a..4d2a1394df2b69b3823b8120524e06af7bcb7cb5 100644
(file)
--- a/
services/nodemanager/arvnodeman/timedcallback.py
+++ b/
services/nodemanager/arvnodeman/timedcallback.py
@@
-1,4
+1,7
@@
#!/usr/bin/env python
#!/usr/bin/env python
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
from __future__ import absolute_import, print_function
from __future__ import absolute_import, print_function
@@
-18,19
+21,20
@@
class TimedCallBackActor(actor_class):
"""
def __init__(self, max_sleep=1):
super(TimedCallBackActor, self).__init__()
"""
def __init__(self, max_sleep=1):
super(TimedCallBackActor, self).__init__()
- self._proxy = self.actor_ref.proxy()
+ self._proxy = self.actor_ref.
tell_
proxy()
self.messages = []
self.max_sleep = max_sleep
def schedule(self, delivery_time, receiver, *args, **kwargs):
self.messages = []
self.max_sleep = max_sleep
def schedule(self, delivery_time, receiver, *args, **kwargs):
+ if not self.messages:
+ self._proxy.deliver()
heapq.heappush(self.messages, (delivery_time, receiver, args, kwargs))
heapq.heappush(self.messages, (delivery_time, receiver, args, kwargs))
- self._proxy.deliver()
def deliver(self):
if not self.messages:
def deliver(self):
if not self.messages:
- return
None
+ return
til_next = self.messages[0][0] - time.time()
til_next = self.messages[0][0] - time.time()
- if til_next < 0:
+ if til_next <
=
0:
t, receiver, args, kwargs = heapq.heappop(self.messages)
try:
receiver(*args, **kwargs)
t, receiver, args, kwargs = heapq.heappop(self.messages)
try:
receiver(*args, **kwargs)