server/utils.py
changeset 8446 cae198371548
parent 8425 b86bdc343c18
child 8546 3d2038d6f20d
equal deleted inserted replaced
8445:594efcf51536 8446:cae198371548
   216         """register a function to be called every `interval` seconds.
   216         """register a function to be called every `interval` seconds.
   217 
   217 
   218         looping tasks can only be registered during repository initialization,
   218         looping tasks can only be registered during repository initialization,
   219         once done this method will fail.
   219         once done this method will fail.
   220         """
   220         """
       
   221         task = LoopTask(self, interval, func, args)
   221         if self.running:
   222         if self.running:
   222             raise RuntimeError("can't add looping task once the repository is started")
   223             self._start_task(task)
   223         self._tasks.append( (interval, func, args) )
   224         else:
       
   225             self._tasks.append(task)
       
   226 
       
   227     def _start_task(self, task):
       
   228         self._looping_tasks.append(task)
       
   229         self.info('starting task %s with interval %.2fs', task.name,
       
   230                   task.interval)
       
   231         task.start()
   224 
   232 
   225     def start(self):
   233     def start(self):
   226         """Start running looping task"""
   234         """Start running looping task"""
   227         assert self.running == False # bw compat purpose maintly
   235         assert self.running == False # bw compat purpose maintly
   228 
       
   229         while self._tasks:
   236         while self._tasks:
   230             interval, func, args = self._tasks.pop()
   237             task = self._tasks.pop()
   231             task = LoopTask(self, interval, func, args)
   238             self._start_task(task)
   232             self._looping_tasks.append(task)
       
   233             self.info('starting task %s with interval %.2fs', task.name,
       
   234                       interval)
       
   235             task.start()
       
   236 
       
   237         self.running = True
   239         self.running = True
   238 
   240 
   239     def stop(self):
   241     def stop(self):
   240         """Stop all running task.
   242         """Stop all running task.
   241 
   243