Jobs

A Job represents a specific execution of a task. To make an analogy with Python, a Task gets instantiated into many Job, like a class that gets instantiated into many objects.

Job

class spinach.job.Job

Represent the execution of a Task by background workers.

The Job class should not be instantiated by the user, instead jobs are automatically created when they are scheduled.

Variables:
  • id – UUID of the job
  • statusJobStatus
  • task_name – string name of the task
  • queue – string name of the queue
  • at – timezone aware datetime representing the date at which the job should start
  • max_retries – int representing how many times a failing job should be retried
  • retries – int representing how many times the job was already executed
  • task_args – optional tuple containing args passed to the task
  • task_kwargs – optional dict containing kwargs passed to the task

Job Status

class spinach.job.JobStatus

Possible status of a Job.

Life-cycle:

  • Newly created jobs first get the status NOT_SET
  • Future jobs are then set to WAITING until they are ready to be QUEUED
  • Jobs starting immediately get the status QUEUED directly when they are received by the broker
  • Jobs are set to RUNNING when a worker start their execution
    • if the job terminates without error it is set to SUCCEEDED
    • if the job terminates with an error and can be retried it is set to WAITING until it is ready to be queued again
    • if the job terminates with an error and cannot be retried it is set to FAILED for ever

See Signals to be notified on some of these status transitions.

FAILED = 5

Job failed and will not be retried

NOT_SET = 0

Job created but not scheduled yet

QUEUED = 2

Job is in a queue, ready to be picked by a worker

RUNNING = 3

Job is being executed

SUCCEEDED = 4

Job is finished, execution was successful

WAITING = 1

Job is scheduled to start in the future