Пример #1
0
 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
Пример #2
0
 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}
Пример #3
0
    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
Пример #4
0
    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)
Пример #5
0
 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
Пример #6
0
 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)
Пример #7
0
 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)
Пример #8
0
    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)
Пример #9
0
    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)