summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorniemeyer <>2004-03-10 20:47:20 +0000
committerniemeyer <>2004-03-10 20:47:20 +0000
commit5e234cf3652c39355d352cde1db4d76156b05a01 (patch)
tree189b0d4ce3615a40122cf88fcca14162b0c49816
parent771256037e94f76d6b749837e4af26f43d304efc (diff)
downloaddateutil-5e234cf3652c39355d352cde1db4d76156b05a01.tar.gz
Removing scheduler.py.
-rw-r--r--dateutil/scheduler.py157
1 files changed, 0 insertions, 157 deletions
diff --git a/dateutil/scheduler.py b/dateutil/scheduler.py
deleted file mode 100644
index 681f442..0000000
--- a/dateutil/scheduler.py
+++ /dev/null
@@ -1,157 +0,0 @@
-"""
-Copyright (c) 2003 Gustavo Niemeyer <niemeyer@conectiva.com>
-
-This module offers extensions to the standard python 2.3+
-datetime module.
-"""
-__author__ = "Gustavo Niemeyer <niemeyer@conectiva.com>"
-__license__ = "PSF License"
-
-import datetime
-import thread
-import signal
-import time
-
-class sched:
-
- def __init__(self, rrule,
- tolerance=None, last=None,
- execute=None, args=None, kwargs=None):
- self._rrule = rrule
- if tolerance:
- self._tolerance = datetime.timedelta(seconds=tolerance)
- else:
- self._tolerance = None
- self._last = last
- self._execute = execute
- self._args = args or ()
- self._kwargs = kwargs or {}
-
- def last(self):
- return self._last
-
- def next(self, now=None):
- if not now:
- now = datetime.datetime.now()
- return self._rrule.after(now)
-
- def check(self, now=None, readonly=False):
- if not now:
- now = datetime.datetime.now()
- item = self._rrule.before(now, inc=True)
- if (item is None or item == self._last or
- (self._tolerance and item+self._tolerance < now)):
- return None
- if not readonly:
- self._last = item
- if self._execute:
- self._execute(*self._args, **self._kwargs)
- return item
-
-
-class schedset:
- def __init__(self):
- self._scheds = []
-
- def add(self, sched):
- self._scheds.append(sched)
-
- def next(self, now=None):
- if not now:
- now = datetime.datetime.now()
- res = None
- for sched in self._scheds:
- next = sched.next(now)
- if next and (not res or next < res):
- res = next
- return res
-
- def check(self, now=None, readonly=False):
- if not now:
- now = datetime.datetime.now()
- res = False
- for sched in self._scheds:
- if sched.check(now, readonly):
- res = True
- return res
-
-
-class schedthread:
-
- def __init__(self, sched, lock=None):
- self._sched = sched
- self._lock = lock
- self._running = False
-
- def running(self):
- return self._running
-
- def run(self):
- self._running = True
- thread.start_new_thread(self._loop, ())
-
- def stop(self):
- self._running = False
-
- def _loop(self):
- while self._running:
- if self._lock:
- self._lock.acquire()
- now = datetime.datetime.now()
- self._sched.check(now)
- if self._lock:
- self._lock.release()
- seconds = _seconds_left(self._sched.next(now))
- if seconds is None:
- self._running = False
- break
- if self._running:
- time.sleep(seconds)
-
-
-class schedalarm:
-
- def __init__(self, sched, lock=None):
- self._sched = sched
- self._lock = lock
- self._running = False
-
- def running(self):
- return self._running
-
- def run(self):
- self._running = True
- signal.signal(signal.SIGALRM, self._handler)
- self._handler(None, None)
-
- def stop(self):
- self._running = False
-
- def _handler(self, sig, frame):
- while self._running:
- if self._lock:
- self._lock.acquire()
- now = datetime.datetime.now()
- self._sched.check(now)
- if self._lock:
- self._lock.release()
- if self._running:
- seconds = _seconds_left(self._sched.next(now))
- if seconds:
- signal.alarm(seconds)
- break
- elif seconds is None:
- self._running = False
- break
-
-
-def _seconds_left(next):
- if not next:
- return None
- now = datetime.datetime.now()
- delta = next-now
- seconds = delta.days*86400+delta.seconds
- if seconds < 0:
- seconds = 0
- return seconds
-