Source code for aiormq.exceptions

from typing import Any, Optional

from pamqp.base import Frame
from pamqp.commands import Basic

from .abc import DeliveredMessage


[docs] class AMQPError(Exception): reason = "An unspecified AMQP error has occurred: %s" def __repr__(self) -> str: try: return "<%s: %s>" % ( self.__class__.__name__, self.reason % self.args, ) except TypeError: # FIXME: if you are here file an issue return f"<{self.__class__.__name__}: {self.args!r}>"
# Backward compatibility AMQPException = AMQPError
[docs] class AMQPConnectionError(AMQPError, ConnectionError): reason = "Unexpected connection problem" def __repr__(self) -> str: if self.args: return f"<{self.__class__.__name__}: {self.args!r}>" return AMQPError.__repr__(self)
[docs] class IncompatibleProtocolError(AMQPConnectionError): reason = "The protocol returned by the server is not supported"
[docs] class AuthenticationError(AMQPConnectionError): reason = ( "Server and client could not negotiate use of the " "authentication mechanisms. Server supports only %r, " "but client supports only %r." )
[docs] class ProbableAuthenticationError(AMQPConnectionError): reason = ( "Client was disconnected at a connection stage indicating a " "probable authentication error: %s" )
[docs] class ConnectionClosed(AMQPConnectionError): reason = "The AMQP connection was closed (%s) %s"
class ConnectionSyntaxError(ConnectionClosed): reason = ( "The sender sent a frame that contained illegal values for " "one or more fields. This strongly implies a programming error " "in the sending peer: %r" ) class ConnectionFrameError(ConnectionClosed): reason = ( "The sender sent a malformed frame that the recipient could " "not decode. This strongly implies a programming error " "in the sending peer: %r" ) class ConnectionCommandInvalid(ConnectionClosed): reason = ( "The client sent an invalid sequence of frames, attempting to " "perform an operation that was considered invalid by the server." " This usually implies a programming error in the client: %r" ) class ConnectionChannelError(ConnectionClosed): reason = ( "The client attempted to work with a channel that had not been " "correctly opened. This most likely indicates a fault in the " "client layer: %r" ) class ConnectionUnexpectedFrame(ConnectionClosed): reason = ( "The peer sent a frame that was not expected, usually in the " "context of a content header and body. This strongly indicates " "a fault in the peer's content processing: %r" ) class ConnectionResourceError(ConnectionClosed): reason = ( "The server could not complete the method because it lacked " "sufficient resources. This may be due to the client creating " "too many of some type of entity: %r" ) class ConnectionNotAllowed(ConnectionClosed): reason = ( "The client tried to work with some entity in a manner that is " "prohibited by the server, due to security settings or by " "some other criteria: %r" ) class ConnectionNotImplemented(ConnectionClosed): reason = ( "The client tried to use functionality that is " "not implemented in the server: %r" ) class ConnectionInternalError(ConnectionClosed): reason = ( " The server could not complete the method because of an " "internal error. The server may require intervention by an " "operator in order to resume normal operations: %r" )
[docs] class AMQPChannelError(AMQPError): reason = "An unspecified AMQP channel error has occurred"
[docs] class ChannelClosed(AMQPChannelError): reason = "The channel was closed (%s) %s"
class ChannelAccessRefused(ChannelClosed): reason = ( "The client attempted to work with a server entity to " "which it has no access due to security settings: %r" )
[docs] class ChannelNotFoundEntity(ChannelClosed): reason = ( "The client attempted to work with a server " "entity that does not exist: %r" )
class ChannelLockedResource(ChannelClosed): reason = ( "The client attempted to work with a server entity to " "which it has no access because another client is working " "with it: %r" )
[docs] class ChannelPreconditionFailed(ChannelClosed): reason = ( "The client requested a method that was not allowed because " "some precondition failed: %r" )
[docs] class DuplicateConsumerTag(ChannelClosed): reason = "The consumer tag specified already exists for this channel: %s"
[docs] class ProtocolSyntaxError(AMQPError): reason = "An unspecified protocol syntax error occurred"
[docs] class InvalidFrameError(ProtocolSyntaxError): reason = "Invalid frame received: %r"
[docs] class MethodNotImplemented(AMQPError): pass
[docs] class DeliveryError(AMQPError): __slots__ = "message", "frame" reason = "Error when delivery message %r, frame %r" def __init__( self, message: Optional[DeliveredMessage], frame: Frame, *args: Any, ): self.message = message self.frame = frame super().__init__(self.message, self.frame)
[docs] class PublishError(DeliveryError): reason = "%r for routing key %r" def __init__(self, message: DeliveredMessage, frame: Frame, *args: Any): assert isinstance(message.delivery, Basic.Return) self.message = message self.frame = frame super(DeliveryError, self).__init__( message.delivery.reply_text, message.delivery.routing_key, *args, )
[docs] class ChannelInvalidStateError(RuntimeError): pass