Loading ccserver/jobs.py +25 −7 Original line number Diff line number Diff line Loading @@ -48,9 +48,15 @@ class BaseJob(dict, Thread, object): # The manager of this job: self.manager = manager # Define default status: # Define default job properties: self['status'] = 'pending' self['done'] = False self['cancelled'] = False self['created'] = datetime.now() self['ended'] = None self['duration'] = 0 #~ assert self.get('author') is not None, 'author is not defined' # List of actions to do by the rollback method: self._wayback = [] Loading Loading @@ -115,7 +121,7 @@ class BaseJob(dict, Thread, object): :param func: callable to add to the wayback list. ''' if self['done']: if self['cancelled']: raise JobCancelError('Job has been cancelled by user') if func is not None: Loading @@ -133,15 +139,19 @@ class BaseJob(dict, Thread, object): except Exception as err: self.report('rollback failed: %s' % err, done=True) else: self.report('rollback: %s' % error, done=True) self.report('cancelled: %s' % error, done=True) def cancel(self): ''' Cancel the job. .. note:: You can override this method to trigger an action when user cancel the job. ''' self['done'] = True self['status'] = 'cancelling' self['cancelled'] = True self.report('cancelling') def export(self, props=None): ''' Loading @@ -157,7 +167,16 @@ class BaseJob(dict, Thread, object): dt = now - val val = dt.seconds + dt.days * 86400 exported[key] = val if key == 'duration': if self['done']: dt = self['ended'] - self['started'] val = dt.seconds + dt.days * 86400 else: now = datetime.now() dt = now - self['started'] val = dt.seconds + dt.days * 86400 exported[key] = str(val) return exported Loading Loading @@ -259,7 +278,6 @@ class JobsManager(object): raise BadJobTypeError('Invalid job type %r' % jtype) job = jobtype(self, id=jobid, **kwargs) job['since'] = datetime.now() self._jobs[jobid] = job job.daemon = True job.start() Loading Loading
ccserver/jobs.py +25 −7 Original line number Diff line number Diff line Loading @@ -48,9 +48,15 @@ class BaseJob(dict, Thread, object): # The manager of this job: self.manager = manager # Define default status: # Define default job properties: self['status'] = 'pending' self['done'] = False self['cancelled'] = False self['created'] = datetime.now() self['ended'] = None self['duration'] = 0 #~ assert self.get('author') is not None, 'author is not defined' # List of actions to do by the rollback method: self._wayback = [] Loading Loading @@ -115,7 +121,7 @@ class BaseJob(dict, Thread, object): :param func: callable to add to the wayback list. ''' if self['done']: if self['cancelled']: raise JobCancelError('Job has been cancelled by user') if func is not None: Loading @@ -133,15 +139,19 @@ class BaseJob(dict, Thread, object): except Exception as err: self.report('rollback failed: %s' % err, done=True) else: self.report('rollback: %s' % error, done=True) self.report('cancelled: %s' % error, done=True) def cancel(self): ''' Cancel the job. .. note:: You can override this method to trigger an action when user cancel the job. ''' self['done'] = True self['status'] = 'cancelling' self['cancelled'] = True self.report('cancelling') def export(self, props=None): ''' Loading @@ -157,7 +167,16 @@ class BaseJob(dict, Thread, object): dt = now - val val = dt.seconds + dt.days * 86400 exported[key] = val if key == 'duration': if self['done']: dt = self['ended'] - self['started'] val = dt.seconds + dt.days * 86400 else: now = datetime.now() dt = now - self['started'] val = dt.seconds + dt.days * 86400 exported[key] = str(val) return exported Loading Loading @@ -259,7 +278,6 @@ class JobsManager(object): raise BadJobTypeError('Invalid job type %r' % jtype) job = jobtype(self, id=jobid, **kwargs) job['since'] = datetime.now() self._jobs[jobid] = job job.daemon = True job.start() Loading