コード例 #1
0
ファイル: tasks.py プロジェクト: IvanDubrowin/task-scheduler
    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')
コード例 #2
0
ファイル: unknown.py プロジェクト: bcho-archive/remote_server
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()
コード例 #3
0
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
コード例 #4
0
 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")
コード例 #5
0
ファイル: tasks.py プロジェクト: IvanDubrowin/task-scheduler
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()])
コード例 #6
0
ファイル: tasks.py プロジェクト: IvanDubrowin/task-scheduler
 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))
コード例 #7
0
ファイル: __init__.py プロジェクト: youenn98/ok
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
コード例 #8
0
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
コード例 #9
0
ファイル: __init__.py プロジェクト: Cal-CS-61A-Staff/ok
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