コード例 #1
0
ファイル: jobmanager.py プロジェクト: magus0219/clockwork
    def spawnImmediateTask(self, jobid, taskid_complex=None, params=None):
        '''
        Run task immediately using basic configuration of job
        
        @param jobid:int
        @param taskid_complex: string 
        @param params: string
        '''
        job = Job.getByJobID(jobid)
        if not job:
            raise ValueError("Job(id:%d) is not existed or not enabled." % (jobid))
        if params :
            job.set_command(job._substituteReservedWord(params))

        if taskid_complex:
            task = Task(job.get_jobid(), uuid.uuid1().hex, datetime.now(),
                            job.getCommandToExcute(), job.get_retry(), job, job.get_depend(), taskid_complex)
        else:
            task = Task(job.get_jobid(), uuid.uuid1().hex, datetime.now(),
                            job.getCommandToExcute(), job.get_retry(), job, job.get_depend())
        t = TaskRunner(0, task, self._status, self, params)
        t.daemon = True
        task.save()
        self._status.add_waiting_task(task, t)
        t.start()
        
        return task
コード例 #2
0
ファイル: jobmanager.py プロジェクト: magus0219/clockwork
 def spawnTasks(self, start_time, end_time):
     '''
     Spawn thread based on Job's timer.
     
     According to start_time and end_time,Job satisfied the job will be 
     wrapped as Task which launched by Timer thread.For Timer accept delay as
     its first parameter,we convert job's timer to delay seconds here.
     These Timer tasks will be started in main thread.
     
     '''
     tasks = []
     jobs = []
     self._lock.acquire()
     try:
         for hour in range(start_time.hour, end_time.hour):
             if hour in self.hour_index:
                 jobs.extend(self.hour_index[hour])
         jobs = set(jobs)
         
         # Clear second and be care of start minute
         determine_time = start_time
         if start_time.second != 0:
             determine_time = start_time + timedelta(minutes=1)
         determine_time = datetime.combine(determine_time.date(), time(hour=determine_time.hour, minute=determine_time.minute))
         
         while determine_time < end_time:
             for job in jobs:
                 if TimeMatcher.matchTimePattern(job.get_time_pattern(), determine_time):
                     task = Task(job.get_jobid(), uuid.uuid1().hex, determine_time,
                                 job.getCommandToExcute(), job.get_retry(), job, job.get_depend())
                     t = TaskRunner((determine_time - datetime.now()).seconds + 1,
                                                    task, self._status, self)
                     t.daemon = True
                     t.start()
                     task.save()
                     tasks.append(task)
                     self._status.add_waiting_task(task, t)
             determine_time = determine_time + timedelta(minutes=1)
                                                                                                                                                                                                                                                                                                                                                                                            
         self._lock.release()
     except Exception, e:
         self._lock.release()
         raise e;
コード例 #3
0
ファイル: jobmanager.py プロジェクト: magus0219/clockwork
 def spawnTask(self, jobid, start_time, end_time):
     '''
     Spawn thread based on one Job's timer
     
     @param jobid:int
     @param start_time:datetime ,start time of time section
     @param end_time:datetime ,end time of time section
     '''
     tasks = []
     self._lock.acquire()
     try:
         job = Job.getByJobID(jobid)
         if not job:
             raise ValueError("Job(id:%d) is not exsited or not enabled." % (jobid))
         
         # Clear second and be care of start minute
         determine_time = start_time
         if start_time.second != 0:
             determine_time = start_time + timedelta(minutes=1)
         determine_time = datetime.combine(determine_time.date(), time(hour=determine_time.hour, minute=determine_time.minute))
         
         while determine_time < end_time:
             if TimeMatcher.matchTimePattern(job.get_time_pattern(), determine_time):
                 task = Task(job.get_jobid(), uuid.uuid1().hex, determine_time,
                             job.getCommandToExcute(), job.get_retry(), job, job.get_depend())
                 t = TaskRunner((determine_time - datetime.now()).seconds + 1,
                                                                    task, self._status, self)
                 t.daemon = True
                 t.start()
                 task.save()
                 tasks.append(task)
                 self._status.add_waiting_task(task, t)
             determine_time = determine_time + timedelta(minutes=1)
                                                                                                                                                                                                                                                                                                                                                                                            
         self._lock.release()
     except Exception, e:
         self._lock.release()
         raise e;