added the twisted-based scheduler to the simple doctest sequence
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2471 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
8a6b84fe27
commit
bfe47ee6a7
2 changed files with 33 additions and 9 deletions
|
@ -103,6 +103,7 @@ the path to the configuration file.
|
|||
|
||||
>>> from cybertools.agent.base.agent import Master
|
||||
>>> master = Master(configFile)
|
||||
>>> configFile.close()
|
||||
|
||||
>>> master.config
|
||||
controller.name = 'sample'
|
||||
|
@ -181,3 +182,26 @@ Logging
|
|||
... print r
|
||||
2... agent:sample01 job:00001 message:job execution
|
||||
2... agent:sample01 job:00002 message:job execution
|
||||
|
||||
|
||||
Using the Twisted-based Scheduler
|
||||
=================================
|
||||
|
||||
>>> config = '''
|
||||
... controller(name='sample')
|
||||
... scheduler(name='core')
|
||||
... logger(name='default', standard=30)
|
||||
... '''
|
||||
>>> master = Master(config)
|
||||
|
||||
>>> master.scheduler
|
||||
<cybertools.agent.core.schedule.Scheduler object ...>
|
||||
|
||||
>>> master.setup()
|
||||
|
||||
>>> jobSpec = JobSpecification('sample', '00001', agent='sample01')
|
||||
>>> master.setupJobs([jobSpec])
|
||||
|
||||
>>> from cybertools.agent.tests import tester
|
||||
>>> tester.iterate()
|
||||
Job 00001 on agent sample01 has been executed.
|
||||
|
|
|
@ -26,6 +26,7 @@ from time import time
|
|||
from zope.interface import implements
|
||||
|
||||
from cybertools.agent.base.agent import Master
|
||||
from cybertools.agent.base.schedule import Scheduler as BaseScheduler
|
||||
from cybertools.agent.components import schedulers
|
||||
from cybertools.agent.interfaces import IScheduler
|
||||
|
||||
|
@ -33,27 +34,26 @@ from twisted.internet import reactor
|
|||
from twisted.internet.defer import Deferred
|
||||
|
||||
|
||||
class Scheduler(object):
|
||||
class Scheduler(BaseScheduler):
|
||||
|
||||
implements(IScheduler)
|
||||
|
||||
def __init__(self, agent):
|
||||
self.agent = agent
|
||||
self.queue = []
|
||||
self.queue = {}
|
||||
|
||||
def schedule(self, job, startTime=None):
|
||||
print "core.schedule called"
|
||||
job.startTime = startTime or int(time())
|
||||
self.queue.append(job)
|
||||
#self.queue.append(job)
|
||||
if startTime is None:
|
||||
startTime = int(time())
|
||||
job.startTime = startTime
|
||||
job.scheduler = self
|
||||
#while startTime in self.queue:
|
||||
# startTime += 1
|
||||
#self.queue[startTime] = job
|
||||
#job.scheduler = self # obsolete, set already in job's __init__()
|
||||
while startTime in self.queue: # TODO: use another key for the queue;
|
||||
startTime += 1 # is the queue necessary anyway?
|
||||
self.queue[startTime] = job
|
||||
reactor.callLater(startTime-int(time()), job.execute)
|
||||
job.execute()
|
||||
#job.execute()
|
||||
return startTime
|
||||
|
||||
def getJobsToExecute(startTime=0):
|
||||
|
|
Loading…
Add table
Reference in a new issue