123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- """
- celery.states
- =============
- Built-in Task States.
- :copyright: (c) 2009 - 2011 by Ask Solem.
- :license: BSD, see LICENSE for more details.
- .. _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])
|