summaryrefslogtreecommitdiff
path: root/apscheduler/job.py
diff options
context:
space:
mode:
authoragronholm <devnull@localhost>2011-04-12 05:14:34 +0300
committeragronholm <devnull@localhost>2011-04-12 05:14:34 +0300
commite7925538748e97d64ddf2182cfb5414e53eecbc2 (patch)
treedaea6c6c7d6c01298e24ea80cac2b380751c08e5 /apscheduler/job.py
parent28676b1adddb31f379d0e18a9c4842a69d8df709 (diff)
downloadapscheduler-e7925538748e97d64ddf2182cfb5414e53eecbc2.tar.gz
Modified Job.add_instance to raise an exception when attempting to exceed max_instances and made the scheduler act accordingly if this happens
Diffstat (limited to 'apscheduler/job.py')
-rw-r--r--apscheduler/job.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/apscheduler/job.py b/apscheduler/job.py
index a3998c2..868e723 100644
--- a/apscheduler/job.py
+++ b/apscheduler/job.py
@@ -9,6 +9,10 @@ from apscheduler.util import to_unicode, ref_to_obj, get_callable_name,\
obj_to_ref
+class MaxInstancesReachedError(Exception):
+ pass
+
+
class Job(object):
"""
Encapsulates the actual Job along with its metadata. Job instances
@@ -87,8 +91,12 @@ class Job(object):
def add_instance(self):
self._lock.acquire()
- self.instances += 1
- self._lock.release()
+ try:
+ if self.instances == self.max_instances:
+ raise MaxInstancesReachedError
+ self.instances += 1
+ finally:
+ self._lock.release()
def remove_instance(self):
self._lock.acquire()