bitkeeper revision 1.1456 (428b84afhYDPsxh36MUzWQkhznuotQ)

XendDomain.py, scheduler.py:
  Simplify scheduler.
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
This commit is contained in:
cl349@firebug.cl.cam.ac.uk committed 2005-05-18 18:08:47 +00:00
1 parent 945440cc09
commit 1baea2ab53
2 files changed
+22 -30

No files matched your search

+3 -6
View File
@@ -19,7 +19,7 @@ import EventServer; eserver = EventServer.instance()
from XendError import XendError
from XendLogging import log
from scheduler import Scheduler
import scheduler
from xen.xend.server import channel
@@ -83,9 +83,6 @@ class XendDomain:
"""Table of pending domain shutdowns, indexed by domain id."""
shutdowns_by_id = {}
"""Table of delayed calls."""
scheduler = Scheduler()
def __init__(self):
# Hack alert. Python does not support mutual imports, but XendDomainInfo
# needs access to the XendDomain instance to look up domains. Attempting
@@ -290,7 +287,7 @@ class XendDomain:
else:
self._delete_domain(d.id)
if cleanup and do_domain_restarts:
self.scheduler.now(self.domain_restarts)
scheduler.now(self.domain_restarts)
def update_domain(self, id):
"""Update the saved info for a domain.
@@ -506,7 +503,7 @@ class XendDomain:
timeout = min(timeout, shutdown.getTimeout())
if self.shutdowns_by_id:
# Pending shutdowns remain - reschedule.
self.scheduler.later(timeout, self.domain_shutdowns)
scheduler.later(timeout, self.domain_shutdowns)
def domain_restart_schedule(self, id, reason, force=False):
"""Schedule a restart for a domain if it needs one.
+19 -24
View File
@@ -1,29 +1,24 @@
import threading
class Scheduler:
def later(delay, fn, args=(), kwargs={}):
"""Schedule a function to be called later.
def later(self, _delay, _fn, args=(), kwargs={}):
"""Schedule a function to be called later.
@param _delay: delay in seconds
@param _fn: function
@param args: arguments (list)
@param kwargs keyword arguments (map)
"""
timer = threading.Timer(delay, fn, args=args, kwargs=kwargs)
timer.start()
return timer
@param _delay: delay in seconds
@param _fn: function
@param args: arguments (list)
@param kwargs keyword arguments (map)
"""
runargs = [ _fn, args, kwargs ]
timer = threading.Timer(_delay, self._run, args=runargs)
timer.start()
def now(fn, args=(), kwargs={}):
"""Schedule a function to be called now.
def now(self, _fn, args=(), kwargs={}):
"""Schedule a function to be called now.
@param _fn: function
@param args: arguments (list)
@param kwargs keyword arguments (map)
"""
runargs = [ _fn, args, kwargs ]
thread = threading.Thread(target=self._run, args=runargs)
thread.start()
def _run(self, fn, args, kwargs):
fn(*args, **kwargs)
@param _fn: function
@param args: arguments (list)
@param kwargs keyword arguments (map)
"""
thread = threading.Thread(target=fn, args=args, kwargs=kwargs)
thread.start()
return thread
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.