class Scheduler(Cron): def __init__(self, factory=None, interval=30): super(Scheduler, self).__init__() if factory: self.factory = factory else: self.factory = TaskFactory() self.factory.start() self.consumer_callback = None self.add_job(interval, self.schedule) def add_consumer_callback(self, callback): self.consumer_callback = callback def stop(self): super(Scheduler, self).stop() self.factory.stop() def schedule(self): download_tasks = self.prepare() for task in download_tasks: real_task = {'url': task['src'], 'deadline': task['deadline']} self.consumer_callback(real_task) def prepare(self): download_tasks = self.factory.get_tasks() logger.info(msg="schedule [%d] download tasks" % len(download_tasks)) return download_tasks
def __init__(self, factory=None, interval=30): super(Scheduler, self).__init__() if factory: self.factory = factory else: self.factory = TaskFactory() self.factory.start() self.consumer_callback = None self.add_job(interval, self.schedule)
def run(self): factory = TaskFactory() scheduler = Scheduler(task_creator=factory, interval=30) engine = Engine(scheduler, download, analyze) engine.add_schedule_job(60, update_idc_current_status) engine.run()