def revoke_job(self, job: Job) -> None: """ Отмена задания """ if job.is_stopped: raise InvalidStateError self.scheduler.remove_job(str(job.id)) job.update(state=JobState.CANCELED, end_time=datetime.now()) logger.debug(f'Job {job.id} canceled')
def enqueue(id, text): if not in_queue(id): j = Job() j.status, j.tweet_id = -1, id db.session.add(j) db.session.commit() f = open(unknown_command_path, 'a') f.write('%s\n' % text.encode('utf-8')) f.close() return j else: return db.session.query(Job).filter( Job.status == -1, Job.tweet_id == id).one()
def sample_Job(): job = Job(executor="psh", filename="testfile", description="Test job description. This job is not real.", os="windows", user="******", timeCreated=utcNowTimestamp()) return job
def mutate(self, info, client, name, description, complete=False, deadline="", labor=""): # Will need to pass null or nothing in for empty deadline on frontend user = info.context.user if user.is_anonymous: # verifies that user is logged in return CreateJob(ok=False, status="Must be logged in.") else: new_job = Job( # creates new client from input data client=Client.objects.get(pk=from_global_id(client)[1]), name=name, description=description, complete=complete, user=user, ) # verifies that required data is present then creates client if labor != "": new_job.labor = labor if deadline != "": new_job.deadline = deadline if complete is not False: new_job.complete = complete new_job.save() return CreateJob(job=new_job, ok=True, status="ok")
def get_jobs() -> Response: """ список всех джобов; опционально сделать фильтр для вывода джобов с определенным состоянием (?state=xxx) """ state = request.args.get('state') queryset = Job.query.filter(Job.state.isnot(None)) if state and Job.is_valid_state(state): queryset = queryset.filter(Job.state == state) return jsonify([job.to_dict() for job in queryset.all()])
def start_jobs(self, job_count: int, job_group_id: int) -> None: """ Запуск заданий """ group: JobGroup = JobGroup.get_or_create(id=job_group_id) for _ in range(job_count): job = Job.create(group_id=group.id) self.scheduler.add_job(job.start, 'interval', minutes=random.randint( MIN_TASK_SLEEP, MAX_TASK_SLEEP), id=str(job.id))
def enqueue_job(func, *args, description=None, course_id=None, user_id=None, timeout=300, result_kind='string', **kwargs): if not description: raise ValueError('Description required to start background job') if not course_id: raise ValueError('Course ID required to start background job') if not user_id: user_id = current_user.id job = Job(status='queued', course_id=course_id, user_id=user_id, name=func.__name__, description=description, result_kind=result_kind) db.session.add(job) db.session.commit() try: get_queue().enqueue_call(func=func, args=args, kwargs=kwargs, job_id=str(job.id), timeout=timeout) except redis.exceptions.ConnectionError as e: job.failed = True job.status = 'finished' job.log = 'Could not connect to Redis: ' + str(e) db.session.add(job) db.session.commit() return job
def enqueue(action, tweet_id, username): summary = human2machine(action) if summary: action, action_type, obj, repeated = summary user = db.session.query(User).filter(User.name == username).one() job = Job() job.action = action job.obj = obj job.tweet_id = tweet_id job.type = action_type job.status = 0 job.repeated = repeated job.added_time = datetime.utcnow() db.session.add(job) job.user = user logger.debug(user.name) db.session.commit() return job else: return None
def enqueue_job(func, *args, description=None, course_id=None, user_id=None, timeout=300, result_kind='string', **kwargs): if not description: raise ValueError('Description required to start background job') if not course_id: raise ValueError('Course ID required to start background job') if not user_id: user_id = current_user.id job = Job( status='queued', course_id=course_id, user_id=user_id, name=func.__name__, description=description, result_kind=result_kind ) db.session.add(job) db.session.commit() try: get_queue().enqueue_call( func=func, args=args, kwargs=kwargs, job_id=str(job.id), timeout=timeout ) except redis.exceptions.ConnectionError as e: job.failed = True job.status = 'finished' job.log = 'Could not connect to Redis: ' + str(e) db.session.add(job) db.session.commit() return job