Here are some handlers that are easy to extend or use directly.
A handler that publishes messages to a SQS queue.
For instance, if we just want just redirect a message to a queue named “my-queue”:
# in your route definition from loafer.ext.aws.handlers import SQSHandler Route(handler=SQSHandler('my-queue'), ...)
The handler assumes a message that could be json encoded (usually a python
You can customize this handler by subclassing it:
class MyHandler(SQSHandler): queue_name = 'my-queue' async def handle(self, message, *args): text = message['text'] return await self.publish(text, encoder=None)
In the example above, we are disabling the message encoding by passing
encoder parameter should be a callable that receives the message to be encoded.
By default, it assumes
Take a note how queue_name was set. You can configure it when instantiate the handler or set the class attribute queue_name, both are valid and the attribute is mandatory. You can also use the queue URL directly, if you prefer.
A handler that publishes messages to a SNS topic.
This handler is very similar to SQSHandler, so going to a similar example:
from loafer.ext.aws.handlers import SNSHandler class MyHandler(SNSHandler): topic = 'my-topic' async def handle(self, message, *args): text = message['text'] return await self.publish(text, encoder=None)
The handler also provides a
publish coroutine with an
that works in the same way as with SQSHandler, except it will publish in a
SNS topic instead a queue.
The SNSHandler also assumes a message that could be json encoded and the
encoder default to
The topic is also mandatory and should be configured in the class definition or when creating the handler instance.
You can set either the topic name or the topic arn (recommended), but when
using the topic name the handler will use
wildcards to match the topic arn.
More details about SNS wildcards are available in their documentation.