diff --git a/agent/crawl/filesystem.txt b/agent/crawl/filesystem.txt index 079dafa..2fa424d 100644 --- a/agent/crawl/filesystem.txt +++ b/agent/crawl/filesystem.txt @@ -32,7 +32,7 @@ transferred. We are now ready to schedule the job and let the reactor execute it. - >>> scheduler.schedule(crawlJob, int(time())) + >>> scheduler.schedule(crawlJob) >>> tester.iterate() Metadata: {'path': '...data...file1.txt'} diff --git a/agent/schedule.py b/agent/schedule.py index 21bb948..52c57b0 100644 --- a/agent/schedule.py +++ b/agent/schedule.py @@ -39,9 +39,12 @@ class Scheduler(object): self.queue = {} self.logger = None - def schedule(self, job, startTime): + def schedule(self, job, startTime=None): + if startTime is None: + startTime = int(time()) job.startTime = startTime job.scheduler = self + # TODO: find a better key to identify jobs self.queue[startTime] = job reactor.callLater(startTime-int(time()), job.run) @@ -53,6 +56,8 @@ class Job(object): implements(IScheduledJob) + scheduler = None + def __init__(self, **params): self.startTime = 0 self.params = params @@ -60,6 +65,8 @@ class Job(object): self.repeat = 0 def execute(self): + """ Must be overridden by subclass. + """ d = Deferred() return d @@ -72,12 +79,13 @@ class Job(object): # TODO: logging def finishRun(self, result): + # remove from queue + del self.scheduler.queue[self.startTime] # run successors for job in self.successors: job.params['result'] = result - job.run() - # remove from queue - del self.scheduler.queue[self.startTime] + #job.run() + self.scheduler.schedule(job) # TODO: logging # reschedule if necessary if self.repeat: diff --git a/agent/testing/transport.py b/agent/testing/transport.py index 508b61f..3cd7d35 100644 --- a/agent/testing/transport.py +++ b/agent/testing/transport.py @@ -23,7 +23,7 @@ $Id$ """ from twisted.internet import reactor -from twisted.internet.defer import Deferred +from twisted.internet.defer import succeed from zope.interface import implements from loops.agent.interfaces import ITransportJob, ITransporter @@ -43,5 +43,5 @@ class Transporter(BaseTransporter): if metadata is not None: print 'Metadata:', metadata print 'Transferring:', text - return Deferred() + return succeed('OK')