def get_due_jobs(self, now): """ Get due jobs. :type now: datetime.datetime """ curr_timestamp = datetime_to_utc_timestamp(now) due_jobs = [] cursor = self.db.elric_jobs.find({"next_timestamp": {"$lt": curr_timestamp}}) for job in cursor: due_jobs.append((job["_id"], job["job_key"], job["serialized_job"].encode("raw_unicode_escape"))) return due_jobs
def add_job(self, job): """ add job :type job: Job """ if job.id in self.job_info: raise JobAlreadyExist("add job failed! job [%s] has already exist" % job.id) next_timestamp = datetime_to_utc_timestamp(job.next_run_time) index = self._get_job_index(job.id, next_timestamp) self.job_run_time.insert(index, (job.id, next_timestamp)) self.job_info[job.id] = {'serialized_job': job.serialize(), 'job_key': job.job_key, 'next_timestamp': next_timestamp}
def get_due_jobs(self, now): """ Get due jobs. :type now: datetime.datetime """ curr_timestamp = datetime_to_utc_timestamp(now) due_jobs = [] for job_id, timestamp in self.job_run_time: if timestamp is None or timestamp > curr_timestamp: break job_info = self.job_info[job_id] due_jobs.append((job_id, job_info['job_key'], job_info['serialized_job'])) return due_jobs
def update_job(self, job): """ update job :type job: Job """ update_job_info = {} if job.job_key is not None: update_job_info["job_key"] = job.job_key update_job_info["serialized_job"] = job.serialize().decode("raw_unicode_escape") update_job_info["next_timestamp"] = datetime_to_utc_timestamp(job.next_run_time) result = self.db.elric_jobs.update_one( {"_id": job.id}, {"$set": update_job_info, "$currentDate": {"lastModified": True}} ) if result.matched_count == 0: raise JobDoesNotExist("update job failed! job [%s] does not exist" % job.id)
def get_due_jobs(self, now): """ Get due jobs. :type now: datetime.datetime """ curr_timestamp = datetime_to_utc_timestamp(now) due_jobs = [] cursor = self.db.elric_jobs.find( {"next_timestamp": { "$lt": curr_timestamp }}) for job in cursor: due_jobs.append( (job["_id"], job['job_key'], job['serialized_job'].encode("raw_unicode_escape"))) return due_jobs
def add_job(self, job): """ add job :type job: Job """ next_timestamp = datetime_to_utc_timestamp(job.next_run_time) try: self.db.elric_jobs.insert_one( { "serialized_job": job.serialize().decode("raw_unicode_escape"), "job_key": job.job_key, "next_timestamp": next_timestamp, "_id": job.id, } ) except pymongo.errors.DuplicateKeyError: raise JobAlreadyExist("add job failed! job [%s] has already exist" % job.id)
def add_job(self, job): """ add job :type job: Job """ next_timestamp = datetime_to_utc_timestamp(job.next_run_time) try: self.db.elric_jobs.insert_one({ "serialized_job": job.serialize().decode("raw_unicode_escape"), "job_key": job.job_key, "next_timestamp": next_timestamp, "_id": job.id, }) except pymongo.errors.DuplicateKeyError: raise JobAlreadyExist( "add job failed! job [%s] has already exist" % job.id)
def update_job(self, job): """ update job :type job: Job """ if job.id not in self.job_info: raise JobDoesNotExist("update job failed! job [%s] does not exist" % job.id) job_info = self.job_info[job.id] if job.job_key is not None: job_info['job_key'] = job.job_key job_info['serialized_job'] = job.serialize() new_timestamp = datetime_to_utc_timestamp(job.next_run_time) old_timestamp = job_info['next_timestamp'] if new_timestamp != old_timestamp: old_index = self._get_job_index(job.id, old_timestamp) del self.job_run_time[old_index] new_index = self._get_job_index(job.id, new_timestamp) self.job_run_time.insert(new_index, (job.id, new_timestamp)) self.context.log.debug("job_run_time = %s" % self.job_run_time)
def update_job(self, job): """ update job :type job: Job """ update_job_info = {} if job.job_key is not None: update_job_info['job_key'] = job.job_key update_job_info['serialized_job'] = job.serialize().decode( "raw_unicode_escape") update_job_info['next_timestamp'] = datetime_to_utc_timestamp( job.next_run_time) result = self.db.elric_jobs.update_one({"_id": job.id}, { "$set": update_job_info, "$currentDate": { "lastModified": True } }) if result.matched_count == 0: raise JobDoesNotExist( "update job failed! job [%s] does not exist" % job.id)