你正在阅读 Celery 3.1 的文档。开发版本文档见: 此处.
# -*- coding: utf-8 -*-
"""
celery.exceptions
~~~~~~~~~~~~~~~~~
This module contains all exceptions used by the Celery API.
"""
from __future__ import absolute_import
from billiard.exceptions import ( # noqa
SoftTimeLimitExceeded, TimeLimitExceeded, WorkerLostError, Terminated,
)
UNREGISTERED_FMT = """\
Task of kind %s is not registered, please make sure it's imported.\
"""
[文档]class NotRegistered(KeyError):
"""The task is not registered."""
def __repr__(self):
return UNREGISTERED_FMT % str(self)
[文档]class RetryTaskError(Exception):
"""The task is to be retried later."""
#: Optional message describing context of retry.
message = None
#: Exception (if any) that caused the retry to happen.
exc = None
#: Time of retry (ETA), either int or :class:`~datetime.datetime`.
when = None
def __init__(self, message=None, exc=None, when=None, **kwargs):
from kombu.utils.encoding import safe_repr
self.message = message
if isinstance(exc, basestring):
self.exc, self.excs = None, exc
else:
self.exc, self.excs = exc, safe_repr(exc) if exc else None
self.when = when
Exception.__init__(self, exc, when, **kwargs)
[文档] def humanize(self):
if isinstance(self.when, int):
return 'in %ss' % self.when
return 'at %s' % (self.when, )
def __str__(self):
if self.message:
return self.message
if self.excs:
return 'Retry %s: %r' % (self.humanize(), self.excs)
return 'Retry %s' % self.humanize()
def __reduce__(self):
return self.__class__, (self.message, self.excs, self.when)
[文档]class NotConfigured(UserWarning):
"""Celery has not been configured, as no config module has been found."""
[文档]class InvalidTaskError(Exception):
"""The task has invalid data or is not properly constructed."""
[文档]class IncompleteStream(Exception):
"""Found the end of a stream of data, but the data is not yet complete."""