Ejemplo n.º 1
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")
Ejemplo n.º 2
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
Ejemplo n.º 3
0
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