Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

119 lines (80 sloc) 2.414 kb
# -*- coding: utf-8 -*-
"""
celery.states
=============
Built-in Task States.
.. _states:
States
------
See :ref:`task-states`.
Sets
----
.. state:: READY_STATES
READY_STATES
~~~~~~~~~~~~
Set of states meaning the task result is ready (has been executed).
.. state:: UNREADY_STATES
UNREADY_STATES
~~~~~~~~~~~~~~
Set of states meaning the task result is not ready (has not been executed).
.. state:: EXCEPTION_STATES
EXCEPTION_STATES
~~~~~~~~~~~~~~~~
Set of states meaning the task returned an exception.
.. state:: PROPAGATE_STATES
PROPAGATE_STATES
~~~~~~~~~~~~~~~~
Set of exception states that should propagate exceptions to the user.
.. state:: ALL_STATES
ALL_STATES
~~~~~~~~~~
Set of all possible states.
Misc.
-----
"""
from __future__ import absolute_import
#: State precedence.
#: None represents the precedence of an unknown state.
#: Lower index means higher precedence.
PRECEDENCE = ["SUCCESS",
"FAILURE",
None,
"REVOKED",
"STARTED",
"RECEIVED",
"RETRY",
"PENDING"]
def precedence(state):
"""Get the precedence index for state.
Lower index means higher precedence.
"""
try:
return PRECEDENCE.index(state)
except ValueError:
return PRECEDENCE.index(None)
class state(str):
"""State is a subclass of :class:`str`, implementing comparison
methods adhering to state precedence rules."""
def compare(self, other, fun, default=False):
return fun(precedence(self), precedence(other))
def __gt__(self, other):
return self.compare(other, lambda a, b: a < b, True)
def __ge__(self, other):
return self.compare(other, lambda a, b: a <= b, True)
def __lt__(self, other):
return self.compare(other, lambda a, b: a > b, False)
def __le__(self, other):
return self.compare(other, lambda a, b: a >= b, False)
PENDING = "PENDING"
RECEIVED = "RECEIVED"
STARTED = "STARTED"
SUCCESS = "SUCCESS"
FAILURE = "FAILURE"
REVOKED = "REVOKED"
RETRY = "RETRY"
READY_STATES = frozenset([SUCCESS, FAILURE, REVOKED])
UNREADY_STATES = frozenset([PENDING, RECEIVED, STARTED, RETRY])
EXCEPTION_STATES = frozenset([RETRY, FAILURE, REVOKED])
PROPAGATE_STATES = frozenset([FAILURE, REVOKED])
ALL_STATES = frozenset([PENDING, RECEIVED, STARTED,
SUCCESS, FAILURE, RETRY, REVOKED])
Jump to Line
Something went wrong with that request. Please try again.