123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- """Pika specific exceptions"""
- # pylint: disable=C0111,E1136
- class AMQPError(Exception):
- def __repr__(self):
- return '%s: An unspecified AMQP error has occurred; %s' % (
- self.__class__.__name__, self.args)
- class AMQPConnectionError(AMQPError):
- def __repr__(self):
- if len(self.args) == 2:
- return '{}: ({}) {}'.format(self.__class__.__name__, self.args[0],
- self.args[1])
- else:
- return '{}: {}'.format(self.__class__.__name__, self.args)
- class ConnectionOpenAborted(AMQPConnectionError):
- """Client closed connection while opening."""
- class StreamLostError(AMQPConnectionError):
- """Stream (TCP) connection lost."""
- class IncompatibleProtocolError(AMQPConnectionError):
- def __repr__(self):
- return (
- '%s: The protocol returned by the server is not supported: %s' % (
- self.__class__.__name__,
- self.args,
- ))
- class AuthenticationError(AMQPConnectionError):
- def __repr__(self):
- return ('%s: Server and client could not negotiate use of the %s '
- 'authentication mechanism' % (self.__class__.__name__,
- self.args[0]))
- class ProbableAuthenticationError(AMQPConnectionError):
- def __repr__(self):
- return (
- '%s: Client was disconnected at a connection stage indicating a '
- 'probable authentication error: %s' % (
- self.__class__.__name__,
- self.args,
- ))
- class ProbableAccessDeniedError(AMQPConnectionError):
- def __repr__(self):
- return (
- '%s: Client was disconnected at a connection stage indicating a '
- 'probable denial of access to the specified virtual host: %s' % (
- self.__class__.__name__,
- self.args,
- ))
- class NoFreeChannels(AMQPConnectionError):
- def __repr__(self):
- return '%s: The connection has run out of free channels' % (
- self.__class__.__name__)
- class ConnectionWrongStateError(AMQPConnectionError):
- """Connection is in wrong state for the requested operation."""
- def __repr__(self):
- if self.args:
- return super(ConnectionWrongStateError, self).__repr__()
- else:
- return ('%s: The connection is in wrong state for the requested '
- 'operation.' % self.__class__.__name__)
- class ConnectionClosed(AMQPConnectionError):
- def __init__(self, reply_code, reply_text):
- """
- :param int reply_code: reply-code that was used in user's or broker's
- `Connection.Close` method. NEW in v1.0.0
- :param str reply_text: reply-text that was used in user's or broker's
- `Connection.Close` method. Human-readable string corresponding to
- `reply_code`. NEW in v1.0.0
- """
- super(ConnectionClosed, self).__init__(int(reply_code), str(reply_text))
- def __repr__(self):
- return '{}: ({}) {!r}'.format(self.__class__.__name__, self.reply_code,
- self.reply_text)
- @property
- def reply_code(self):
- """ NEW in v1.0.0
- :rtype: int
- """
- return self.args[0]
- @property
- def reply_text(self):
- """ NEW in v1.0.0
- :rtype: str
- """
- return self.args[1]
- class ConnectionClosedByBroker(ConnectionClosed):
- """Connection.Close from broker."""
- class ConnectionClosedByClient(ConnectionClosed):
- """Connection was closed at request of Pika client."""
- class ConnectionBlockedTimeout(AMQPConnectionError):
- """RabbitMQ-specific: timed out waiting for connection.unblocked."""
- class AMQPHeartbeatTimeout(AMQPConnectionError):
- """Connection was dropped as result of heartbeat timeout."""
- class AMQPChannelError(AMQPError):
- def __repr__(self):
- return '{}: {!r}'.format(self.__class__.__name__, self.args)
- class ChannelWrongStateError(AMQPChannelError):
- """Channel is in wrong state for the requested operation."""
- class ChannelClosed(AMQPChannelError):
- """The channel closed by client or by broker
- """
- def __init__(self, reply_code, reply_text):
- """
- :param int reply_code: reply-code that was used in user's or broker's
- `Channel.Close` method. One of the AMQP-defined Channel Errors.
- NEW in v1.0.0
- :param str reply_text: reply-text that was used in user's or broker's
- `Channel.Close` method. Human-readable string corresponding to
- `reply_code`;
- NEW in v1.0.0
- """
- super(ChannelClosed, self).__init__(int(reply_code), str(reply_text))
- def __repr__(self):
- return '{}: ({}) {!r}'.format(self.__class__.__name__, self.reply_code,
- self.reply_text)
- @property
- def reply_code(self):
- """ NEW in v1.0.0
- :rtype: int
- """
- return self.args[0]
- @property
- def reply_text(self):
- """ NEW in v1.0.0
- :rtype: str
- """
- return self.args[1]
- class ChannelClosedByBroker(ChannelClosed):
- """`Channel.Close` from broker; may be passed as reason to channel's
- on-closed callback of non-blocking connection adapters or raised by
- `BlockingConnection`.
- NEW in v1.0.0
- """
- class ChannelClosedByClient(ChannelClosed):
- """Channel closed by client upon receipt of `Channel.CloseOk`; may be passed
- as reason to channel's on-closed callback of non-blocking connection
- adapters, but not raised by `BlockingConnection`.
- NEW in v1.0.0
- """
- class DuplicateConsumerTag(AMQPChannelError):
- def __repr__(self):
- return ('%s: The consumer tag specified already exists for this '
- 'channel: %s' % (self.__class__.__name__, self.args[0]))
- class ConsumerCancelled(AMQPChannelError):
- def __repr__(self):
- return '%s: Server cancelled consumer' % self.__class__.__name__
- class UnroutableError(AMQPChannelError):
- """Exception containing one or more unroutable messages returned by broker
- via Basic.Return.
- Used by BlockingChannel.
- In publisher-acknowledgements mode, this is raised upon receipt of Basic.Ack
- from broker; in the event of Basic.Nack from broker, `NackError` is raised
- instead
- """
- def __init__(self, messages):
- """
- :param sequence(blocking_connection.ReturnedMessage) messages: Sequence
- of returned unroutable messages
- """
- super(UnroutableError, self).__init__(
- "%s unroutable message(s) returned" % (len(messages)))
- self.messages = messages
- def __repr__(self):
- return '%s: %i unroutable messages returned by broker' % (
- self.__class__.__name__, len(self.messages))
- class NackError(AMQPChannelError):
- """This exception is raised when a message published in
- publisher-acknowledgements mode is Nack'ed by the broker.
- Used by BlockingChannel.
- """
- def __init__(self, messages):
- """
- :param sequence(blocking_connection.ReturnedMessage) messages: Sequence
- of returned unroutable messages
- """
- super(NackError,
- self).__init__("%s message(s) NACKed" % (len(messages)))
- self.messages = messages
- def __repr__(self):
- return '%s: %i unroutable messages returned by broker' % (
- self.__class__.__name__, len(self.messages))
- class InvalidChannelNumber(AMQPError):
- def __repr__(self):
- return '%s: An invalid channel number has been specified: %s' % (
- self.__class__.__name__, self.args[0])
- class ProtocolSyntaxError(AMQPError):
- def __repr__(self):
- return '%s: An unspecified protocol syntax error occurred' % (
- self.__class__.__name__)
- class UnexpectedFrameError(ProtocolSyntaxError):
- def __repr__(self):
- return '%s: Received a frame out of sequence: %r' % (
- self.__class__.__name__, self.args[0])
- class ProtocolVersionMismatch(ProtocolSyntaxError):
- def __repr__(self):
- return '%s: Protocol versions did not match: %r vs %r' % (
- self.__class__.__name__, self.args[0], self.args[1])
- class BodyTooLongError(ProtocolSyntaxError):
- def __repr__(self):
- return ('%s: Received too many bytes for a message delivery: '
- 'Received %i, expected %i' % (self.__class__.__name__,
- self.args[0], self.args[1]))
- class InvalidFrameError(ProtocolSyntaxError):
- def __repr__(self):
- return '%s: Invalid frame received: %r' % (self.__class__.__name__,
- self.args[0])
- class InvalidFieldTypeException(ProtocolSyntaxError):
- def __repr__(self):
- return '%s: Unsupported field kind %s' % (self.__class__.__name__,
- self.args[0])
- class UnsupportedAMQPFieldException(ProtocolSyntaxError):
- def __repr__(self):
- return '%s: Unsupported field kind %s' % (self.__class__.__name__,
- type(self.args[1]))
- class MethodNotImplemented(AMQPError):
- pass
- class ChannelError(Exception):
- def __repr__(self):
- return '%s: An unspecified error occurred with the Channel' % (
- self.__class__.__name__)
- class ReentrancyError(Exception):
- """The requested operation would result in unsupported recursion or
- reentrancy.
- Used by BlockingConnection/BlockingChannel
- """
- class ShortStringTooLong(AMQPError):
- def __repr__(self):
- return ('%s: AMQP Short String can contain up to 255 bytes: '
- '%.300s' % (self.__class__.__name__, self.args[0]))
- class DuplicateGetOkCallback(ChannelError):
- def __repr__(self):
- return ('%s: basic_get can only be called again after the callback for '
- 'the previous basic_get is executed' % self.__class__.__name__)
|